因此,我一直在进行Learn Python the Hard Way的最后一个练习,它指出在运行我正在研究的程序之前,您必须像这样设置Pythonpath环境变量:
export PYTHONPATH=$PYTHONPATH:.
我已经做到了,但是在它不起作用之后(我假设这就是为什么当我尝试运行我的程序时,我得到一个ImportError),我对pythonpath进行了一些研究。本质上说Pythonpath是在哪里找到要导入的模块。因此,我将Pythonpath设置为我要导入的模块的实际位置,但仍然无济于事。
这是我的目录:
我正在尝试运行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上运行。
$ cd ~/path/to/gothonweb/
python bin/app.py
但是,如果您这样做:
$ cd bin/ # WRONG! WRONG! WRONG! $ python app.py # WRONG! WRONG! WRONG!
[很多用户倾向于犯此错误,here是Zed Shaw的一个很好的解释,关于为什么不这样运行您的应用程序!然后您做错了。在所有python项目中,您都不会进入较低目录来运行内容。您留在顶部并从那里运行所有内容,以便所有系统都可以访问所有模块和文件。
import sys
sys.path.append(stringofpath)
您可以记住要添加的每个路径。
stringofpath
是/path/to/dir/
,其中dir
是您的[[project所在的目录。NOT您的项目目录。然后,使用从项目目录开始的普通点表示法,继续进入所有子目录。
在您的情况下,您的stringofpath
是'User/myname/python_stuff'
随着您的前进,您将不得不花一些时间来学习python路径,其中有很多东西很难找到。并且环境变量(至少在Linux中)在/etc/environment
中永久设置。
PYTHONPATH
设置为包文件夹的绝对路径,然后无论您位于哪个文件夹中,python都会找到您的包。或者您可以使用虚拟环境工具来帮助您管理这些。