Переменная окружения PYTHONPATH

У меня есть это в моем ~/.profile:

export PYTHONPATH=/home/dev/python-files

В каталоге python-files у меня есть несколько проектов, клонированных из git-hub (flask, кривый и py-vgdl).

Всякий раз, когда я пытаюсь запустить любой из примеров в этих проектах, я получаю ошибки, подобные следующим:

$ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py 
Traceback (most recent call last):
    File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in <module>
        from vgdl.core import VGDLParser
ImportError: No module named vgdl.core

Мне кажется, что я не должен получить эту ошибку, потому что У меня есть PYTHONPATH переменная окружения?

Запуск интерактивного интерпретатора python:

>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'
19
задан 3 February 2013 в 20:32

4 ответа

Попробуйте добавить PYTHONPATH вместо того, чтобы полностью перезаписать его.

export PYTHONPATH=$PYTHONPATH:/home/dev/python-files

Ссылки:

В соответствии с документацией Python о PYTHONPATH

Дополнить путь поиска по умолчанию для файлов модулей. [...]

Путь поиска по умолчанию зависит от установки, но обычно начинается с prefix/lib/pythonversion (см. PYTHONHOME выше). всегда добавляется к PYTHONPATH.

означает, что некоторые значения существуют в PYTHONPATH, и путь поиска по умолчанию также только добавляется.

Кроме того, этот пост ( Archive.org ссылка ) также ясно объясняет, почему вам нужно добавить PYTHONPATH, а не перезаписать его. Прокрутка вниз до раздела - Особые случаи и изучение пути поиска объясняет это ясно (к сожалению, нет относительного URL для этой ссылки, поэтому вам придется прокручивать). Хотя пользователь приводит примеры на Mac, они очень актуальны для любой платформы

0
ответ дан 3 February 2013 в 20:32

Вы также можете сделать следующее:

export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}

pwd - текущий рабочий каталог.

0
ответ дан 3 February 2013 в 20:32

PYTHONPATH должен указать туда, где Ваши пакеты Python и модули, не, где Ваш контроль. Другими словами, если Вы делаете ls "$PYTHONPATH" необходимо видеть *.py файлы (модули Python) и каталоги, содержащие __init__.py файлы (пакеты Python).

Так, если Вы хотите смочь к import vgdl, Ваш PYTHONPATH должен быть похожим на это:

PYTHONPATH=/home/dev/python-files/py-vgdl

потому что vgdl пакет внутри py-vgdl, не внутри python-files.

Для добавления других путей также можно использовать : разделить их:

PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"

Это будет действительно работать, однако, для таких случаев, с помощью PYTHONPATH может быть слишком сложным. То, что я рекомендую, должно использовать virtualenv, который сделан нарочно упростить ситуации как Ваши. То, что необходимо сделать, в основном:

  1. Создайте среду: virtualenv env
  2. 'Активируйте' его: source env/bin/activate
  3. Установите свои пакеты: это могло быть сделано любое использование pip или setup.py сценарий Ваших пакетов.
  4. Приятного отдыха.

Я не даю много информации, потому что virtualenv хорошо зарегистрирован и если Вы нуждаетесь в помощи с чем-то, необходимо открыть новый вопрос.

4
ответ дан 3 February 2013 в 20:32

try

echo 'export PYTHONPATH=/path/to/caff-dir/python'

Также вам может потребоваться выполнить следующее:

pip install -r requirement.txt
0
ответ дан 30 January 2020 в 01:52

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

Похожие вопросы: