Pythonpath对我不起作用

时间:2012-06-21 01:14:01

标签: python pythonpath

所以我一直在进行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
    • templates(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,如果有帮助的话。

3 个答案:

答案 0 :(得分:7)

像这样运行应用程序:

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

但是,如果你这样做了:

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

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

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

答案 1 :(得分:2)

好的是在python中添加你的python路径,最简单的方法是在你的模块的TOP。

import sys
sys.path.append(stringofpath)

您可以回忆一下您要添加的每个路径。

stringofpath/path/to/dir/,其中dir是您的项目所在的目录。 NOT 您的项目目录。然后使用从项目目录开始的常规点表示法继续下降到所有子目录。

在您的情况下,stringofpath'User/myname/python_stuff'

随着你的进步,你将不得不花费一些时间来学习你的python路径,有很多东西很难找到。环境变量 - 至少在linux中 - 永久设置在/etc/environment

答案 2 :(得分:0)

您必须告诉python将包加载到哪里(即包含__init__.py文件的文件夹)。

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

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