设置python路径

时间:2012-09-04 13:46:27

标签: python django path

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

Error: No module named django_openid

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

  1. 我格式化了我的计算机并完全重新安装了所有内容 - 包括virtualenv,以及基于我的requirements.txt文件夹中的设置项目所需的所有依赖包(除了Django)
  2. 我尝试了python manage.py syncdb并收到了错误
  3. 我搜索了这个问题,很多人都说这可能是一个路径问题。

    我对如何改变路径变量感到困惑,这究竟是什么意思。我发现了一些文档,但是它有些像是一个hack-ish noob,它有点过头了。

    所以我的问题是:

    1. 他们的目的究竟是什么 - 他们是基于Python版本的基于系统的级别还是依赖于项目?
    2. 我怎样才能看到我们目前的情况?
    3. 如何更改它们(即,他们所说的.profile文件在哪里,我可以使用文本编辑器)
    4. 你所拥有的任何输入都会很棒,因为这会让我感到难过,我只想回到编写代码: - )

2 个答案:

答案 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会话的路径,你应该创建一个在启动时加载的文件,这样做:

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

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

答案 1 :(得分:2)

真的需要改变路径吗?最好先实际考虑一下你的理由。如果您只是在服务器上运行单个应用程序,或者您只是不关心使用可能不必要的软件包污染系统软件包目录,那么将所有内容放在主系统site-packages或dist-packages目录中。否则,请使用virtualenv。

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