Pythonpath对我不起作用

问题描述 投票:4回答:3

因此,我一直在进行Learn Python the Hard Way的最后一个练习,它指出在运行我正在研究的程序之前,您必须像这样设置Pythonpath环境变量:

export PYTHONPATH=$PYTHONPATH:.

我已经做到了,但是在它不起作用之后(我假设这就是为什么当我尝试运行我的程序时,我得到一个ImportError),我对pythonpath进行了一些研究。本质上说Pythonpath是在哪里找到要导入的模块。因此,我将Pythonpath设置为我要导入的模块的实际位置,但仍然无济于事。

这是我的目录:

  • 用户/ MYNAME / python_stuff /项目/ GothonWeb
    • 二进制/
      • init.py(当然带有双下划线。)
      • app.py
    • gothonweb /
      • init.py(当然带有双下划线。)
      • maps.py
    • 模板(web.py)
      • game.html
      • index.html的
      • 的layout.html
    • 依此类推。

我正在尝试运行app.py,它试图导入main.py模块:

from gothonweb import maps

但是我仍然收到此错误:

Traceback (most recent call last):
File "python_stuff/projects/GothonWeb/bin/app.py", line 2, in <module>
from gothonweb import maps
ImportError: No module named gothonweb

有人知道吗?哦,还有其他一些细节。如果有帮助,请在Mac Os X Lion上的Python 2.7上运行。

python pythonpath
3个回答
7
投票
像这样运行应用程序:

$ cd ~/path/to/gothonweb/ python bin/app.py

但是,如果您这样做:

$ cd bin/ # WRONG! WRONG! WRONG! $ python app.py # WRONG! WRONG! WRONG!

[很多用户倾向于犯此错误,here是Zed Shaw的一个很好的解释,关于为什么不这样运行您的应用程序!

然后您做错了。在所有python项目中,您都不会进入较低目录来运行内容。您留在顶部并从那里运行所有内容,以便所有系统都可以访问所有模块和文件。


2
投票
可以在python中添加到python路径中,最简单的方法是在模块的顶部。

import sys sys.path.append(stringofpath)

您可以记住要添加的每个路径。

stringofpath/path/to/dir/,其中dir是您的[[project所在的目录。

NOT您的项目目录。然后,使用从项目目录开始的普通点表示法,继续进入所有子目录。

在您的情况下,您的stringofpath'User/myname/python_stuff'随着您的前进,您将不得不花一些时间来学习python路径,其中有很多东西很难找到。并且环境变量(至少在Linux中)在/etc/environment中永久设置。

0
投票
为了避免上述错误,您可以将PYTHONPATH设置为包文件夹的绝对路径,然后无论您位于哪个文件夹中,python都会找到您的包。

或者您可以使用虚拟环境工具来帮助您管理这些。

© www.soinside.com 2019 - 2024. All rights reserved.