导入错误:没有名为django的模块

yos*_*ssi 21 python django centos pythonpath

我正在使用centos linux.

我有django的python 2.6,现在我升级到python 2.7.
Python 2.6位于/usr/lib/python2.6中.
Python 2.7位于/usr/local/lib/python2.7中.
它们都有site-packages目录,它们都包含django 1.2.

如果我运行python我得到2.7版本.
我的问题是如果尝试导入django我得到

ImportError:没有名为django的模块

我不确定我的PYTHONPATH在哪里定义,如果这是我需要改变的.任何人 ?

我最终建立了2.6 site-packages目录的符号链接.

小智 23

我有同样的错误,这解决了我的问题

python -m pip install django

:)完成!

  • 这对我有用 - 关心运行这个,而不是'pip install django`? (4认同)

jco*_*ado 15

要检查路径,可以使用以下代码:

import sys     
print(sys.path)
Run Code Online (Sandbox Code Playgroud)

如果您已经知道django的安装位置,那么应该很容易测试所需的目录是否在您的路径中directory in sys.path.

关于PYTHONPATH定义的位置,请注意它是一个环境变量,因此您可以使用以下命令检查其值(如果已定义):echo $PYTHONPATH

  • 该direcroty不在路径,但父direcotory - "/usr/local/lib/python2.7/site-packages"是路径,如何添加一个目录来这条道路? (2认同)
  • 除了'PYTHONPATH`之外,`sys.path`的内容是使用取决于安装的值填充的.[相关问题](http://stackoverflow.com/q/897792/183066). (2认同)

Ada*_*ris 14

在linux下,您可以在.profile或.bashrc中设置PYTHONPATH环境变量.您可以直接从终端编辑它,方法是切换到您的主目录(cd~),然后编辑文件(nano .bashrc),或者用gtkedit或vim或其他任何东西打开文件,然后添加:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:/another/path/etc
Run Code Online (Sandbox Code Playgroud)

如果要在编辑配置文件之前对其进行测试,可以将其从终端导出为:

export PYTHONPATH=/local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

我假设你是从命令行直接运行的.如果您在apache中将其作为wsgi模块运行,则可以从wsgi文件将其添加到syspath中:

import sys
sys.path.append('/usr/local/lib/python2.7/site-packages')
Run Code Online (Sandbox Code Playgroud)


Dim*_*zis 11

尝试

pip freeze
Run Code Online (Sandbox Code Playgroud)

此命令显示系统中安装了哪些软件包,然后以root权限运行

pip install django
Run Code Online (Sandbox Code Playgroud)

然后使用命令创建一个新项目

django-admin.py startproject mysite
Run Code Online (Sandbox Code Playgroud)

然后开始你的项目

cd path/to/mysite
./manage.py runserver 
Run Code Online (Sandbox Code Playgroud)

在文件wsgi.py中添加此行

import os
import sys
DJANGO_PATH =  os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
Run Code Online (Sandbox Code Playgroud)


Mar*_*mro 9

尝试打印sys.path以查看路径中的内容.Django需要在列出的一个目录中.Windows上的示例:

>>> import sys
>>> for p in sys.path: print p

C:\Python27\Lib\idlelib
C:\Windows\system32\python27.zip
C:\Python27\DLLs
C:\Python27\lib
C:\Python27\lib\plat-win
C:\Python27\lib\lib-tk
C:\Python27
C:\Python27\lib\site-packages
>>> 
Run Code Online (Sandbox Code Playgroud)

  • 我如何将目录添加到此列表中?如果我使用 .append 它不存在 (2认同)
  • 请参阅http://docs.python.org/tutorial/modules.html#the-module-search-path (2认同)