I have also been dissatisfied with the current options for making local python libraries accessible in certain org files. The amount of setup that is required outside the org file itself was too large, especially if you want someone else who is not intimately familiar with python to be able to use it. My old solution was to modify the PYTHONPATH environment variable for the whole Emacs process. However, after a bit of digging inspired by this thread I now have a solution that is entirely local: advise ~org-babel-execute:python~ to set a new PYTHONPATH via the ~process-environment~ dynamic variable and set that from a buffer local variable for the local additions to PYTHONPATH along with getenv PYTHONPATH. A working example below. Best! Tom
#+name: orgstrap #+begin_src elisp :results none :noweb noexport (defvar-local local-python-path nil) (defun advise--obe-python-path (command &rest args) (let ((process-environment (or (and local-python-path (cons (format "PYTHONPATH=%s" (concat local-python-path (getenv "PYTHONPATH"))) process-environment)) process-environment))) (apply command args))) (advice-add #'org-babel-execute:python :around #'advise--obe-python-path) (setq-local local-python-path (concat default-directory "code:")) #+end_src On Tue, Nov 24, 2020 at 9:26 AM Jack Kamm <jackk...@gmail.com> wrote: > > Joost Kremers <joostkrem...@fastmail.fm> writes: > > > I haven't really considered the option to install the utility functions as a > > package in the virtual environment, because I expect to change and develop > > those > > functions together with the rest of the project. If it were a separate > > package, > > I'd need to reinstall it every time I make changes to it, which will > > probably > > happen often. > > If you install the package using either "python setup.py develop", or > "pip install -e", then Python will install your code via symlinks > instead of copying, so then you don't have to worry about reinstalling > every time you make an edit. > > To switch between venv's in emacs, I use pyvenv: > https://github.com/jorgenschaefer/pyvenv >