У меня есть это в моем ~/.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'
Попробуйте добавить PYTHONPATH вместо того, чтобы полностью перезаписать его.
export PYTHONPATH=$PYTHONPATH:/home/dev/python-files
Ссылки:
В соответствии с документацией Python о PYTHONPATH
Дополнить путь поиска по умолчанию для файлов модулей. [...]
Путь поиска по умолчанию зависит от установки, но обычно начинается с
blockquote>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
, который сделан нарочно упростить ситуации как Ваши. То, что необходимо сделать, в основном:
virtualenv env
source env/bin/activate
pip
или setup.py
сценарий Ваших пакетов.Я не даю много информации, потому что virtualenv хорошо зарегистрирован и если Вы нуждаетесь в помощи с чем-то, необходимо открыть новый вопрос.
try
echo 'export PYTHONPATH=/path/to/caff-dir/python'
Также вам может потребоваться выполнить следующее:
pip install -r requirement.txt