Personalizar o caminho de pesquisa do módulo (PYTHONPATH) via pipenv

Eu tenho um projeto Python que consiste em um notebook Jupyter, vários scripts em umbin diretório e módulos em umsrc diretório, com dependências em umPipfile:

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

Os scriptsfoo.py ebar.py use o shebang padrão

#!/usr/bin/env python

e pode ser executado compipenv shell:

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

No entanto, não consigo acessar facilmente os módulos nosrc dos scripts. Se eu adicionar

import src.baz as baz

parafoo.py, Eu recebo:

ModuleNotFoundError: No module named 'src'

Uma solução que tentei é adicionar um.env arquivo emmyproject:

PYTHONPATH=${PYTHONPATH}:${PWD}

Isso funciona graças apipenvécarregamento automático de.env, mas verificando o.env arquivo na distribuição git do projeto colidiria com o uso tradicional de.env armazenar segredos como senhas - na verdade, meu padrão.gitignore para projetos Python já exclui.env por esse motivo.

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

Como alternativa, eu poderia me mudarsrc sobbin, mas o notebook Jupyter precisaria fazer referência aos módulos comobin.src.baz etc., o que também é um aborrecimento.

Minha solução atual é apenas adicionar um link simbólico:

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

Isso funciona, e suponho que tenha o benefício de ser transparente, mas parece que deve haver alguma maneira de alavancarpipenv para resolver o mesmo problema.

Existe uma maneira portátil e distribuível de colocar esses módulos no caminho de pesquisa?

questionAnswers(2)

yourAnswerToTheQuestion