【问题标题】:Django REST Framework - Django capitalized in `pip3 list`Django REST Framework - Django 在`pip3 list` 中大写
【发布时间】:2020-12-29 04:17:19
【问题描述】:

我正在使用带有 this 教程的 Django REST 框架构建 API。当我尝试测试python3 manage.py 时,我收到ModuleNotFoundError: No module named 'django' 错误。我一直在处理可能存在的一长串问题(重新安装 django,需要在根目录中添加 __init__.py 等),有人建议使用 pip3 list 检查我的模块列表。

这是我看到的:

Package             Version
------------------- -------
asgiref             3.3.1
dj-database-url     0.5.0
Django              3.1.4
django-filter       2.4.0
django-heroku       0.3.1
djangorestframework 3.12.2
gunicorn            20.0.4

Django 大写是有原因的吗?这可能是它在manage.py 中找不到它的原因吗?如果是这样,我该如何解决?

这是我收到的完整错误消息,但它确实很笼统。异常是硬编码的:

Traceback (most recent call last):
  File "manage.py", line 11, in main
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 17, in main
    ) from exc
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

【问题讨论】:

  • 你在使用 virtualenv 吗? django-admin --version 的结果是什么?
  • 你读过这篇 SO 帖子吗,stackoverflow.com/questions/46210934/…\
  • 分发包的名称(Django)和导入包的名称(django)不一定要匹配。分发包是您pip-安装的东西。虽然导入包是您导入的东西。它们是两种不同的东西。 1个分发包可以包含多个导入包,名称不必匹配。--sinoroc.github.io/kb/python/packaging.html
  • @JPG 我没有使用 virtualenv,根据您发送的 SO,我认为这是我的问题。不知道为什么,但我的教程从未提到使用虚拟环境。 django-admin --version 给我3.1.4
  • @JPG 我从来没有用过 virtualenv,所以对我来说都是全新的。有推荐的教程吗?我已经对一个项目非常深入,所以我希望能顺利进行。

标签: python django module pip


【解决方案1】:

在使用 Django 等大型框架时,必须始终在 virtual environment 中工作。请检查您是否已激活虚拟环境。如果没有,请按照以下步骤操作:

  1. cd your_working_directory
  2. virtualenv environment_name 其中environment_name 可以是您想要的任何名称。
  3. environment_name/Scripts/activate 如果在 Windows

或者 environment_name/bin/activate 如果打开 MacOS

然后在激活环境后,您可以使用 pip 安装所有依赖项。即pip install django

【讨论】:

  • 这似乎是个好建议。我以前从未使用过virtual environment,所以我对你给出的步骤是全新的。有推荐的教程吗?我找到了这个:hostadvice.com/how-to/…
  • 这最终解决了我的问题,所以尽管投反对票,我还是接受了它。可能由于以下原因而被否决: 1. 它没有提到安装 virtualenv (pip install virtualenv) 2. 步骤 2 没有解释 environment_name 是什么。事实证明它可以是任何东西,只是我们想要的环境名称。 3. 第 3 步和第 4 步应该只是第 3 步,其中带有“或”,以表明只需要完成这两个步骤中的一个。感谢您的帮助!
  • 抱歉,如果我错过了提及 pip install virtualenv。但我很高兴它解决了你的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2023-02-25
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多