Personalizar la ruta de búsqueda del módulo (PYTHONPATH) a través de pipenv

Tengo un proyecto de Python que consiste en un cuaderno Jupyter, varios scripts en unbin directorio y módulos en unsrc directorio, con dependencias en unPipfile:

myproject
├── myproject.ipynb
├── Pipfile
├── Pipfile.lock
├── bin
│   ├── bar.py
│   └── foo.py
└── src
    ├── baz.py
    └── qux.py

Los guionesfoo.py ybar.py usa el shebang estándar

#!/usr/bin/env python

y se puede ejecutar conpipenv shell:

mymachine:myproject myname$ pipenv shell
(myproject-U308romt) bash-3.2$ bin/foo.py
foo

Sin embargo, no puedo acceder fácilmente a los módulos ensrc De los guiones. Si agrego

import src.baz as baz

afoo.py, Yo obtengo:

ModuleNotFoundError: No module named 'src'

Una solución que probé es agregar un.env archivo bajomyproject:

PYTHONPATH=${PYTHONPATH}:${PWD}

Esto funciona gracias apipenv'scarga automática de.env, pero revisando el.env archivo en la distribución git del proyecto colisionaría con el uso tradicional de.env para almacenar secretos como las contraseñas; de hecho, mi valor predeterminado.gitignore para proyectos de Python ya excluye.env solo por esta razón.

$ git add .env
The following paths are ignored by one of your .gitignore files:
.env
Use -f if you really want to add them.

Alternativamente, podría movermesrc debajobin, pero luego el cuaderno Jupyter tendría que hacer referencia a los módulos comobin.src.baz etc., que también es una molestia.

Mi solución actual es solo agregar un enlace simbólico:

myproject
├── Pipfile
├── Pipfile.lock
├── bin
│   ├── bar.py
│   ├── foo.py
│   └── src -> ../src
└── src
    ├── baz.py
    └── qux.py

Esto funciona, y supongo que tiene el beneficio de ser transparente, pero parece que debería haber alguna forma de aprovecharpipenv para resolver el mismo problema

¿Existe una forma portátil y distribuible de colocar estos módulos en la ruta de búsqueda?

Respuestas a la pregunta(2)

Su respuesta a la pregunta