В 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 настройка переменной среды?
Увеличьте путь поиска по умолчанию для файлов модуля. [...]
Путь поиска по умолчанию зависит от установки, но обычно начинается с prefix/lib/pythonversion (см. PYTHONHOME выше). Это всегда прилагается к PYTHONPATH.
это означает, что некоторые ценности существуют в PYTHONPATH и путь поиска по умолчанию также только добавляется.
Дополнительно, это сообщение в блоге (Archive.org ссылка) также четко объясняет, почему вам нужно добавить к PYTHONPATH и не перезаписывать его. Прокрутка вниз до раздела - Особые случаи и изучение пути поиска объясняет это четко (к сожалению, нет относительного URL-адреса для этой ссылки, поэтому вам придется прокручивать). Хотя пользователь приводит примеры на mac, они очень актуальны для любой платформы
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 может быть, это слишком сложно. Что я рекомендую, так это использовать virtualenv, который сделан специально для упрощения ситуаций, подобных вашей. То, что вам нужно сделать, это в основном:
Создайте среду: virtualenv env
"Активировать" его: source env/bin/activate
Установите свои пакеты: это можно сделать либо с помощью pip или в setup.py сценарий ваших пакетов.
Наслаждаться.
Я не даю много информации, потому что virtualenv - это хорошо документированный и если вам нужна помощь в чем-то, вам лучше задать новый вопрос.