Добавить каталог в 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 следует разделять символом ";".

  1. Вы должны использоватьos.path.joinчтобы сделать ваш код более надежным.
  2. Вы уже использовали 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.

Это работало только в этом ядре, но, возможно, это поможет кому-то другому.

Другие вопросы по тегам