4

我有一个 Django 应用程序,每当我尝试运行我的代码时都会出现错误:

Error: No module named django_openid

让我退后一步,告诉你我是怎么做到的:

  1. 我格式化了我的计算机并完全重新安装了所有东西——包括 virtualenv,以及我的项目所需的所有依赖包(除了 Django),基于我的 requirements.txt 文件夹中的设置
  2. 我试着做python manage.py syncdb并得到了错误

我用谷歌搜索了这个问题,很多人说这可能是路径问题。

我对如何更改路径变量以及它们的确切含义感到困惑。我找到了一些文档,但有点像 hack-ish 菜鸟,这让我有点不知所措。

所以我的问题是:

  1. 它们的目的究竟是什么——它们是基于 Python 版本的基于系统的级别,还是依赖于项目?
  2. 我怎样才能看到我的当前设置是什么?
  3. 我该如何更改它们(即他们谈论的这个 .profile 文件在哪里,我可以只使用文本编辑器吗)

您的任何输入都会很棒,因为这让我很困惑,我只想重新开始编写代码:-)

4

2 回答 2

6

path只是你文件系统中的位置,python 将在其中搜索你试图导入的模块。例如,当您运行时,Python 将在路径(变量)中包含的所有位置中import somemodule执行搜索。somemodulesys.path

您应该检查模块中的path属性sys

import sys
print sys.path

它只是一个常规列表,因此您可以从中添加/删除元素:

sys.path.append('/path/to/some/module/folder/')

如果你想改变你启动的每个 python 会话的路径,你应该创建一个在启动时加载的文件,这样做:

  1. 创建一个PYTHONSTARTUP环境变量并将其设置为您的启动文件。例如:(PYTHONSTARTUP=/home/user/.pythonrc在 unix shell 中);
  2. 编辑启动文件,使其包含您希望在加载 python 时自动执行的命令;

a 的一个例子.pythonrc可能是:

import sys
sys.path.append('/path/to/some/folder/')
于 2012-09-04T13:50:21.573 回答
2

真的需要改变路径吗?最好先真正考虑你的原因。如果您只打算在服务器上运行单个应用程序,或者您只是不关心使用可能不必要的包污染系统包目录,则将所有内容放在主系统站点包或 dist-packages 目录中。否则,使用 virtualenv。

系统级包目录始终在路径上。Virtualenv 激活时会将其 site-packages 目录添加到路径中,Django 将在激活时将项目目录添加到路径中。不需要在路径中添加任何其他内容,实际上这是您在实践中永远不必担心的事情。

于 2012-09-04T14:27:34.120 回答