Как установить путь Python, используя Jupyter - PullRequest
0 голосов
/ 07 ноября 2018

Моя структура проекта выглядит следующим образом

project_name/
    project_name/
        __init__.py
        sub_package1/
            __init__.py
            some_module1.py
        sub_package2/
            __init__.py
            some_module2.py
    scripts/
        some_script.py
    notebooks/
        some_notebook.py
    top level files <requirements.txt, .gitignore, README.md, ...>

Теперь я хочу, чтобы в моих скриптах на Python внутри папки скриптов и в моих тетрадях внутри папки тетрадей был доступ к моей основной библиотеке как

from project_name.sub_package1 import some_module1

Каков наилучший способ достичь этого?
Некоторые идеи, которые я придумал:

1)

В папке с моим блокнотом создайте файл context.py с содержимым

 sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

Тогда в своих тетрадях я могу сделать

from context import project_name  

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

2)

В записной книжке выполните

notebook_dir = os.path.split(os.getcwd())[0]
if notebook_dir not in sys.path:
    sys.path.insert(0, notebook_dir)

, так как файл dunder не существует в интерактивной оболочке. Здесь я не совсем уверен, что произойдет, если я где-нибудь поменяю диск и, в конце концов, иметь этот беспорядок в начале моего ноутбука несколько нежелательно.

3)

Добавьте корневую папку имя_проекта в путь к Python. Если это можно сделать не жестко закодированным способом, это было бы здорово. Я использую pyenv и pyenv virtualenv.

Спасибо за ваши предложения, Matt

...