Добавить каталог в Python sys.path, чтобы он включался каждый раз, когда я использую Python
В настоящее время, когда я пытаюсь ссылаться на некоторый библиотечный код, я делаю это в верхней части моего файла python:
import sys
sys.path.append('''C:\code\my-library''')
from my-library import my-library
Затем, my-library
будет частью sys.path до тех пор, пока сеанс активен. Если я начинаю новый файл, я должен не забыть включить sys.path.append
снова.
Я чувствую, что должен быть намного лучший способ сделать это. Как я могу сделать my-library
доступны для каждого скрипта Python на моей машине Windows без использования sys.path.append
каждый раз?
6 ответов
Просто добавьте этот путь в переменную окружения PYTHONPATH. Для этого перейдите в Панель управления / Система / Дополнительно / Переменная среды и в разделах "Пользовательские переменные" проверьте, есть ли у вас уже PYTHONPATH. Если да, выберите его и нажмите "Изменить", если нет, нажмите "Новый", чтобы добавить его.
Пути в PYTHONPATH следует разделять символом ";".
- Вы должны использовать
os.path.join
чтобы сделать ваш код более надежным. - Вы уже использовали my-library в пути. Так что не используйте его второй раз при импорте. Если у вас есть структура каталогов, подобная этойC:\code\my-library\lib.py, и вы работаете в ней, например
print("Hello, world")
тогда ваш результирующий код должен быть
import sys
sys.path.append(os.path.join('C:/', 'code', 'my-library')
from lib import main
Если это библиотека, которую вы используете в своем коде, вы должны установить ее как таковую. Упакуйте его правильно, и либо установите его в свой site-packages
каталог - или, если он специфичен для определенных проектов, используйте virtualenv
и установить его только в рамках соответствующих virtualenvs.
Для этого вам нужно использовать файл sitecustomize.py (или usercustomize.py), в котором вы будете вносить изменения в sys.path ( исходные документы по python).
Создайте файл sitecustomize.py в каталоге \Lib\site-packages вашей установки python, и он будет импортироваться при каждом запуске интерпретатора python.
Если вы делаете это в интерактивном режиме, лучше всего установить ipython и настроить параметры запуска для включения этого кода. Если вы намереваетесь включить его в сценарий, который вы запускаете из интерпретатора, то же самое относится и к нему, поскольку он будет иметь доступ к вашему пространству имен.
С другой стороны, автономный скрипт не должен включать это автоматически. В будущем вы или другой сопровождающий придете, и весь код должен быть очевиден и не зависеть от конкретной настройки машины. Лучше всего создать файл скелета для новых проектов, который включает в себя все основные функциональные возможности, которые вам нужны. Это, наряду с часто используемыми фрагментами, решит проблему.
Весь ваш код для запуска скрипта будет в скрипте, и вам не придется каждый раз думать о добавлении этого кода.
Использование jupyter в нескольких средах не помогло добавить путь к .bashrc. Мне пришлось отредактировать файл kernel.json для этого конкретного ядра и добавить его в PYTHONPATH в разделе env.
Это работало только в этом ядре, но, возможно, это поможет кому-то другому.