Постоянно добавить каталог в PYTHONPATH? - PullRequest
270 голосов
/ 04 августа 2010

Всякий раз, когда я использую sys.path.append, будет добавлен новый каталог.Однако, как только я закрою python, список вернется к предыдущим (по умолчанию?) Значениям.Как мне постоянно добавить каталог в PYTHONPATH?

Ответы [ 17 ]

379 голосов
/ 04 августа 2010

Если вы используете bash (на дистрибутиве Mac или GNU / Linux), добавьте это к своему ~/.bashrc

export PYTHONPATH="${PYTHONPATH}:/my/other/path"
116 голосов
/ 04 августа 2010

Вам необходимо добавить новый каталог в переменную окружения PYTHONPATH, отделенную двоеточием от его предыдущего содержимого. В любой форме Unix вы можете сделать это в скрипте запуска, подходящем для любой используемой вами оболочки (.profile или в зависимости от вашей любимой оболочки), с помощью команды, которая, опять же, зависит от рассматриваемой оболочки; в Windows вы можете сделать это через системный графический интерфейс для этой цели.

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

79 голосов
/ 07 сентября 2012

Вместо манипулирования PYTHONPATH вы также можете создать файл конфигурации пути .Сначала выясните, в каком каталоге Python ищет эту информацию:

python -m site --user-site

По некоторым причинам это не работает в Python 2.7.Там вы можете использовать:

python -c 'import site; site._script()' --user-site

Затем создайте файл .pth в этом каталоге, содержащий путь, который вы хотите добавить (создайте каталог, если он не существует).пример:

# find directory
SITEDIR=$(python -m site --user-site)

# create if it doesn't exist
mkdir -p "$SITEDIR"

# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"
28 голосов
/ 09 июня 2015

Это работает в Windows

  1. В Windows с Python 2.7 перейдите в папку установки Python.
  2. Откройте Lib / site-packages.
  3. Добавитьexample.pth пустой файл в эту папку.
  4. Добавьте требуемый путь к файлу, по одному на каждую строку.

Тогда вы сможете увидеть все модули в этих путяхиз ваших сценариев.

20 голосов
/ 14 сентября 2012

В случае, если кто-то все еще смущен - если вы работаете на Mac, сделайте следующее:

  1. Открыть терминал
  2. Тип open .bash_profile
  3. В появившемся текстовом файле добавьте эту строку в конце: export PYTHONPATH=$PYTHONPATH:foo/bar
  4. Сохраните файл, перезапустите Терминал, и все готово
19 голосов
/ 04 августа 2010

Вы можете добавить путь через ваш файл pythonrc, который по умолчанию равен ~ / .pythonrc в linux. то есть.

import sys
sys.path.append('/path/to/dir')

Вы также можете установить переменную окружения PYTHONPATH в глобальном rc-файле, например, ~/.profile на Mac или Linux, или через Панель управления -> Система -> вкладка Дополнительно -> Переменные среды в Windows.

12 голосов
/ 20 июля 2016

Чтобы дать более подробное объяснение, Python автоматически создаст свои пути поиска (как упоминалось выше и здесь ), используя скрипт site.py (обычно расположенный в sys.prefix + lib/python<version>/site-packages, а также lib/site-python). Можно получить значение sys.prefix:

python -c 'import sys; print(sys.prefix)'

Затем сценарий site.py добавляет ряд каталогов, зависящих от платформы, таких как /usr/{lib,share}/python<version>/dist-packages, /usr/local/lib/python<version>/dist-packages, к пути поиска , а также ищет эти пути для <package>.pth файлов конфигурации которые содержат конкретные дополнительные пути поиска. Например, easy-install поддерживает свою коллекцию установленных пакетов, которые добавляются в системный файл, например, в Ubuntu это /usr/local/lib/python2.7/dist-packages/easy-install.pth. В типичной системе есть куча этих файлов .pth, которые могут объяснить некоторые неожиданные пути в sys.path:

python -c 'import sys; print(sys.path)'

Таким образом, можно создать файл .pth и поместить его в любой из этих каталогов (включая sitedir, как упомянуто выше ). Похоже, именно так большинство пакетов добавляются в sys.path, а не в PYTHONPATH.

Примечание: В OSX есть специальный дополнительный путь поиска, добавленный site.py для «сборок фреймворка» (но, похоже, работает для обычного использования Python в командной строке): /Library/Python/<version>/site-packages (например, для Python2.7: /Library/Python/2.7/site-packages/ ) где должны быть установлены сторонние пакеты (см. README в этом каталоге). Таким образом, можно добавить туда файл конфигурации пути, содержащий дополнительные пути поиска, например, создайте файл с именем /Library/Python/2.7/site-packages/pip-usr-local.pth, который содержит /usr/local/lib/python2.7/site-packages/, а затем системный питон добавит этот путь поиска.

9 голосов
/ 28 января 2014

Для меня это сработало, когда я изменил файл .bash_profile.Простое изменение файла .bashrc работало только до тех пор, пока я не перезапустил оболочку.

Для python 2.7 он должен выглядеть так:

export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"

в конце файла .bash_profile.

9 голосов
/ 29 марта 2013

В linux вы можете создать символическую ссылку из вашего пакета на каталог PYTHONPATH, не имея дело с переменными окружения. Что-то вроде:

ln -s /your/path /usr/lib/pymodules/python2.7/
6 голосов
/ 21 февраля 2018

Добавление export PYTHONPATH="${PYTHONPATH}:/my/other/path" в ~ / .bashrc может не работать, если PYTHONPATH в настоящее время не существует (из-за :).

export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"

Добавление вышеупомянутого к моему ~ /.bashrc помог мне в Ubuntu 16.04

...