我通过多种方式安装了 Django,包括通过apt-get
和pip install
。它们都说我拥有最新版本的 Django。现在,每当我在终端中运行 python 并输入 import django 时,我都会收到
ImportError: No module named django
然而,当我跑步时,django-admin --version
我收到
1.4.3
我知道它已经安装了,但是为什么 python 找不到 django 模块?
答案1
python
找不到,因为它不在其路径上。您可以看到查找模块的django
路径列表,如下所示:python
$ python
>>> import sys
>>> sys.path
django
如果找到安装位置,则可以导入,并将该位置添加到python
路径中,例如这样:
$ PYTHONPATH=/path/to/django/parent/dir python
>>> import django # should work now
但真正的问题是您的安装出了问题。如果您使用python
安装了python
AND ,那么肯定应该在的路径上,而不会出现上述肮脏的黑客行为。django
apt-get
django
python
也就是说,在使用 Django 时,最好的办法是不要使用,apt-get
而是使用 创建虚拟环境virtualenv
(您可以使用 安装virtualenv
它apt-get
),并在虚拟环境中安装 Django 和您的 Django 站点可能需要使用的其他模块pip
。这样,您就可以并排拥有多个 Django 项目,并精确地使用所需的 Python 模块和版本。这只是几个额外的步骤,但绝对值得,并且将为您节省未来的很多挫折。
答案2
当我使用 PyCharm 社区版制作 Django 项目时也遇到了同样的问题。
对我来说,以下步骤有效:
事实证明,python 希望您创建一个虚拟环境,在其中安装 django,然后运行服务器。为此,
创建虚拟环境
1)使用安装虚拟环境
pip install virtualenv
。2)导航到项目文件夹并输入
virtualenv env
(此处env
是虚拟环境的名称。)这将创建一个名为env
在项目文件夹内。3)
env/Scripts
使用 导航到项目文件夹内部。cd env/Scripts
4) 输入
activate
并按 Enter。这将启动虚拟环境。您可以验证这一点,因为它将作为当前路径的前缀。(env)
安装 Django
cd ../..
1)进入虚拟环境后,使用并输入返回项目文件夹pip install django
。2)您可以通过键入来验证其安装
django-admin --version
。 它应该显示虚拟环境中安装的 django 版本号。
现在输入python manage.py runserver
以启动python服务器。
答案3
我遇到了同样的问题。我激活了虚拟环境
$ source bin/activate
之后它向我展示了 Django 的版本
无需安装任何东西。
mamata@mamta-inspire-all:~/dodjango$ python -m django --version
/usr/bin/python: No module named django
mamata@mamta-inspire-all:~/dodjango$ django-admin --version
Command 'django-admin' not found, but can be installed with:
sudo apt install python-django-common
mamata@mamta-inspire-all:~/dodjango$ source bin/activate
(dodjango) mamata@mamta-inspire-all:~/dodjango$ ls
bin include lib lib64 mamusite pyvenv.cfg share
(dodjango) mamata@mamta-inspire-all:~/dodjango$ django-admin --version
2.2.5
(dodjango) mamata@mamta-inspire-all:~/dodjango$ python -m django --version
2.2.5
答案4
我有这个问题,直到最近我的项目 vscode 仍然无法识别我的虚拟环境,所以每当我尝试运行该项目时,它都会给我一个错误,即 vscode 无法导入 django
解决这个问题的方法是,我将虚拟环境中的库导出到填充
pip freeze > req.txt
然后我创建了一个具有相同要求的新虚拟环境,并且它起作用了
注意:尝试查找python 虚拟环境