файл должен быть только

я есть проект Python, состоящий из блокнота Jupyter, нескольких сценариев вbin каталог и модули вsrc каталог, с зависимостями вPipfile:

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

Сценарииfoo.py а такжеbar.py использовать стандартный Shebang

#!/usr/bin/env python

и может быть запущен сpipenv shell:

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

Тем не менее, я не могу легко получить доступ к модулям вsrc из сценариев. Если я добавлю

import src.baz as baz

вfoo.py, Я получил:

ModuleNotFoundError: No module named 'src'

Одно из решений, которое я попробовал, это добавить.env файл подmyproject:

PYTHONPATH=${PYTHONPATH}:${PWD}

Это работает благодаряpipenv«sавтоматическая загрузка.env, но проверяя.env файл в дистрибутив проекта git будет сталкиваться с традиционным использованием.env хранить секреты, такие как пароли - на самом деле, мой по умолчанию.gitignore для проектов Python уже исключает.env только по этой причине.

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

В качестве альтернативы, я мог бы двигатьсяsrc подbin, но тогда блокнот Jupyter должен будет ссылаться на модули какbin.src.baz и т.д., что также является проблемой.

Мой текущий обходной путь - просто добавить символическую ссылку:

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

Это работает, и я полагаю, что преимущество заключается в прозрачности, но, похоже, должен быть какой-то способ использоватьpipenv решить ту же проблему.

Существует ли переносимый распространяемый способ размещения этих модулей в пути поиска?

Ответы на вопрос(1)

Ваш ответ на вопрос