PYTHONPATH 环境变量

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 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

参考:

根据PYTHONPATH 上的 Python 文档

增强模块文件的默认搜索路径。[...]

默认搜索路径取决于安装,但通常以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,它旨在简化类似您的情况。您要做的基本操作是:

  1. 创建环境:virtualenv env
  2. ‘激活’它:source env/bin/activate
  3. pip安装您的软件包:这可以使用或setup.py您的软件包的脚本来完成。
  4. 享受。

我没有提供太多信息,因为 virtualenv 是有据可查如果您需要某些帮助,最好提出一个新问题。

答案4

尝试

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

此外,您可能需要运行以下命令:

pip install -r requirement.txt

相关内容