Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置PYTHONPATH和项目布局_Python_Pythonpath - Fatal编程技术网

如何设置PYTHONPATH和项目布局

如何设置PYTHONPATH和项目布局,python,pythonpath,Python,Pythonpath,我一直在做最后一个练习,它说在我运行我一直在做的程序之前,你必须像这样设置Pythonpath环境变量: export PYTHONPATH=$PYTHONPATH:. $ cd ~/path/to/gothonweb/ python bin/app.py 我这样做了,在它不起作用之后(我想这就是为什么当我试着运行我的程序时,我得到了一个重要的恐惧),我对pythonpath做了一些研究。本质上讲,Pythonpath是为了找到要导入的模块的位置。因此,我将Pythonpath设置为我试图导

我一直在做最后一个练习,它说在我运行我一直在做的程序之前,你必须像这样设置Pythonpath环境变量:

export PYTHONPATH=$PYTHONPATH:.
$ cd ~/path/to/gothonweb/
python bin/app.py
我这样做了,在它不起作用之后(我想这就是为什么当我试着运行我的程序时,我得到了一个重要的恐惧),我对pythonpath做了一些研究。本质上讲,Pythonpath是为了找到要导入的模块的位置。因此,我将Pythonpath设置为我试图导入的模块的实际位置,但仍然无效

这是我的目录:

- User/_myname_/python_stuff/projects/GothonWeb
    - bin/
        - __init__.py
        - app.py
    - gothonweb/
        - __init__.py
        - maps.py
    - templates (web.py)
        - game.html
        - index.html
        - layout.html
    - so forth and so on.
我正在尝试运行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
回溯(最近一次呼叫最后一次):
文件“python_stuff/projects/GothonWeb/bin/app.py”,第2行,在
从gothonweb导入地图
ImportError:没有名为GoTonWeb的模块

有人知道发生了什么事吗?哦,还有其他一些细节。在Mac Os X Lion上运行Python 2.7,如果有帮助的话。

像这样运行应用程序:

export PYTHONPATH=$PYTHONPATH:.
$ cd ~/path/to/gothonweb/
python bin/app.py
但是,如果您这样做:

$ cd bin/   # WRONG! WRONG! WRONG!
$ python app.py  # WRONG! WRONG! WRONG!
很多用户都会犯这个错误,Zed Shaw对为什么不这样运行你的应用做了很好的解释


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

好的,要在python中添加python路径,最简单的方法是在模块顶部

import sys
sys.path.append(stringofpath)
对于要添加的每个路径,您都可以回忆起这一点

stringofpath
/path/to/dir/
其中
dir
是项目所在的目录。不是你的项目目录。然后使用从项目目录开始的普通点符号,继续向下进入所有子目录

在您的例子中,您的
stringofpath
'User/myname/python\u stuff'


随着您的进步,您将不得不花一些时间认真学习python路径,有很多东西很难找到。而环境变量(至少在linux中)是在
/etc/environment
中永久设置的,您必须告诉python在哪里加载您的包(即,包含
\uuu init\uuuuy.py
文件的文件夹)

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


或者你可以使用虚拟环境工具来帮助你管理它们。

你是从~/path/to/gothonweb/bin$python app.py文件夹运行的吗?你的python路径设置为什么?为了回答Eswar,我这样运行:python pat/to/gothonweb/bin/app.py和Bren,我的pythonpath设置为:/Users/myname/python_stuff/projects/GothonWeb/GothonWeb在我输入“export pythonpath=$pythonpath:/Users/myname/python_stuff/projects/GothonWeb”后,我像你说的那样输入了它,它就工作了。为什么它只能这样工作?是的!我问了之后就看到了。我想我忘了上那节课了。谢谢。PYTHONPATH是否需要包含~/path/to/gothonweb/才能使此解决方案正常工作?