PYTHONPATH环境变量


19

我在我的~/.profile

export PYTHONPATH=/home/dev/python-files

python-files目录中,我从git-hub克隆了一些项目(烧瓶,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'

Answers:


35

尝试附加到PYTHONPATH,而不是完全覆盖它。

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

参考文献:

根据PYTHONPATH上Python文档

扩展模块文件的默认搜索路径。[...]

默认搜索路径取决于安装,但通常以prefix/lib/pythonversion(请参见PYTHONHOME上文)开头。它总是附加到PYTHONPATH

表示其中存在一些值,PYTHONPATH并且仅附加了默认搜索路径。

此外,此博客文章Archive.org链接)还清楚地说明了为什么需要附加PYTHONPATH而不是覆盖它。向下滚动至“ 特殊情况 ”部分,并检查搜索路径可以清楚地对其进行解释(不幸的是,该链接没有相对URL,因此您必须滚动)。尽管用户在Mac上提供了示例,但它们与任何平台都非常相关


1
@Garrett谢谢:)更新了Archive.org链接。
Nitin Venkatesh 2015年

+1(用于存档/立体声复本链接)。它回答了很多问题,应该放在官方Python文档的首页上!
马里克·鲁米


4

PYTHONPATH应该指向您的Python包和模块所在的位置,而不是指向签出的位置。换句话说,如果您这样做,则ls "$PYTHONPATH"应该看到*.py文件(Python模块)和包含__init__.py文件的目录(Python包)。

因此,如果您希望能够import vgdlPYTHONPATH则应如下所示:

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. 安装软件包:可以使用pipsetup.py软件包的脚本来完成。
  4. 请享用。

我提供的信息不多,因为virtualenv 的文档资料丰富,如果您需要某些方面的帮助,则最好提出一个新问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.