我的里面有这个~/.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 VGDLParser
ImportError: No module named vgdl.core
在我看来,我不应该收到这个错误,因为我已经PYTHONPATH
设置了环境变量?
运行python交互式解释器:
>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'
答案1
尝试附加到 PYTHONPATH 而不是完全覆盖它。
export PYTHONPATH=$PYTHONPATH:/home/dev/python-files
参考:
增强模块文件的默认搜索路径。[...]
默认搜索路径取决于安装,但通常以
prefix/lib/pythonversion
(见PYTHONHOME
上文)开头。它是总是附加到PYTHONPATH
。
意味着某些值存在PYTHONPATH
并且默认搜索路径也仅被附加。
此外,这篇博文(Archive.org 链接)也清楚地解释了为什么需要附加到PYTHONPATH
而不是覆盖它。向下滚动到以下部分 -特殊情况和检查搜索路径解释得很清楚(遗憾的是,该链接没有相关 URL,因此您必须滚动查看)。虽然用户在 Mac 上给出了示例,但它们与任何平台都非常相关
答案2
您还可以执行以下操作:
export PYTHONPATH=$(pwd)
或者
export PYTHONPATH=${PWD}
pwd
是当前的工作目录。
答案3
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 是有据可查如果您需要某些帮助,最好提出一个新问题。
答案4
尝试
echo 'export PYTHONPATH=/path/to/caff-dir/python'
此外,您可能需要运行以下命令:
pip install -r requirement.txt