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

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

export PYTHONPATH=/home/dev/python-files

В python-files каталог, у меня есть несколько проектов, клонированных из git-hub (flask, curveship и 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 VGDLParserImportError: No module named vgdl.core

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

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

>>> import os>>> os.environ["PYTHONPATH"]'/home/dev/python-files'

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

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

Рекомендации:

В соответствии с Документация Python по PYTHONPATH

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

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

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

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

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

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

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

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 - это хорошо документированный и если вам нужна помощь в чем-то, вам лучше задать новый вопрос.

пробовать

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

Кроме того, вам может потребоваться выполнить следующие действия:

pip install -r requirement.txt