我有一个Django应用程序,每当我尝试运行代码时都会收到错误:
Error: No module named django_openid
让我退一步告诉你我是怎么做到的:
python manage.py syncdb
并收到了错误我搜索了这个问题,很多人都说这可能是一个路径问题。
我对如何改变路径变量感到困惑,这究竟是什么意思。我发现了一些文档,但是它有些像是一个hack-ish noob,它有点过头了。
所以我的问题是:
你所拥有的任何输入都会很棒,因为这会让我感到难过,我只想回到编写代码: - )
答案 0 :(得分:5)
path
只是文件系统中python将搜索您要导入的模块的位置。例如,当您运行import somemodule
时,Python将在路径(somemodule
变量)中包含的所有位置搜索sys.path
。
您应该检查path
模块中的sys
属性:
import sys
print sys.path
这只是一个常规列表,你可以追加/删除元素:
sys.path.append('/path/to/some/module/folder/')
如果你想改变你开始的每个python会话的路径,你应该创建一个在启动时加载的文件,这样做:
PYTHONSTARTUP
环境变量并将其设置为启动文件。例如:PYTHONSTARTUP=/home/user/.pythonrc
(在unix shell中); .pythonrc
的一个例子可能是:
import sys
sys.path.append('/path/to/some/folder/')
答案 1 :(得分:2)
你真的需要改变路径吗?最好先实际考虑一下你的理由。如果您只是在服务器上运行单个应用程序,或者您只是不关心使用可能不必要的软件包污染系统软件包目录,那么将所有内容放在主系统site-packages或dist-packages目录中。否则,请使用virtualenv。
系统级包目录始终位于路径上。 Virtualenv会在激活时将其site-packages目录添加到路径中,Django会在激活时将项目目录添加到路径中。不应该在路径中添加任何其他内容,实际上这是你在实践中不应该担心的事情。