jer*_*ome 26 python environment-variables
我有这个~/.profile
:
export PYTHONPATH=/home/dev/python-files
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
在我看来,我不应该收到此错误,因为我PYTHONPATH
设置了该环境变量?
运行 python 交互式解释器:
>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'
Run Code Online (Sandbox Code Playgroud)
Nit*_*esh 46
尝试附加到 PYTHONPATH 而不是完全覆盖它。
export PYTHONPATH=$PYTHONPATH:/home/dev/python-files
Run Code Online (Sandbox Code Playgroud)
参考:
增加模块文件的默认搜索路径。[...]
默认搜索路径取决于安装,但通常以
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
Run Code Online (Sandbox Code Playgroud)
因为vgdl
包裹在里面py-vgdl
,而不是里面python-files
。
要添加其他路径,您可以使用:
将它们分开:
PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"
Run Code Online (Sandbox Code Playgroud)
这确实有效,但是,对于这种情况,使用PYTHONPATH
可能过于复杂。我推荐的是使用virtualenv
,这是为了简化像你这样的情况而特意制作的。你要做的基本上是:
virtualenv env
source env/bin/activate
pip
的setup.py
脚本或脚本来完成。我没有提供太多信息,因为 virtualenv 有据可查,如果您需要帮助,最好提出一个新问题。
归档时间: |
|
查看次数: |
333977 次 |
最近记录: |