【问题标题】:No module named django.core when running django-admin startproject myproject运行 django-admin startproject myproject 时没有名为 django.core 的模块
【发布时间】:2017-07-10 17:38:42
【问题描述】:

在 macOS 上运行 django-admin startproject myproject 时出现错误

回溯(最近一次通话最后一次):
文件“/usr/local/bin/django-admin”,第 2 行,在
从 django.core 导入管理
ImportError: 没有名为 django.core 的模块

我检查了this question,但运行import django 不会在python3 shell 中产生任何输出。

/usr/local/bin/django-admin 是指向/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/bin/django-admin.py 的符号链接。

我已经按照其他问题中的建议将 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django 放入了我的 PYTHONPATH 中。

我错过了什么吗?

【问题讨论】:

  • “运行 import django 不会在 python3 shell 中执行任何操作”是什么意思?
  • 在 python3 shell 中运行 import django 时没有输出。
  • 如果你的意思是你只是得到下一个命令的提示,那是标准行为。这意味着它能够导入 django 并且能够找到该模块。
  • 是的,这也是我发现的。但是,我无法从命令行创建新的 django 项目。
  • import django 工作了吗?

标签: python django


【解决方案1】:

即使你成功了,做你正在做的事情也不是一个好习惯!理想情况下,您希望在 /usr/local/bin/ 中的唯一与 python 相关的二进制文件是 python、pip 和 virtualenv(或 venv、pyvenv)...

我建议你删除/Library/Frameworks/Python.framework/Versions/3.6,前提是你安装了它。据我所知,macOS只安装了python2.7,没有安装python3.6!

然后打开一个新的 shell 试试这个:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install python3
pip3 install virtualenv
cd ~/Desktop/
mkdir proj
cd proj
virtualenv -p python3 env
source env/bin/activate
pip install django
django-admin.py startproject testproj

如果您已经安装了 brew,请跳过第一步

【讨论】:

  • 为什么在之后使用 brew 重新安装时要删除我的 python3 安装?但是使用 virtualenv 有效。这也是@jomunculus 所指出的。
  • @elementzero23:请注意,如果您仍在使用 Python 3.6,则需要使用 venv 而不是 virtualenv
  • @McGlothlin 为什么?我选择 virtualenv 是因为 Django 的安装指南中建议使用它。到目前为止,我只使用 python 来运行一些小脚本 - 不需要虚拟环境。
  • 这可能没什么问题,但是venv是Python 3.3内置的
  • @elementzero23 venv 和 virtualenv 有区别! venv 简单明了,除了最基本的必需品外没有其他功能,而 virtualenv 则很广泛 - 它适用于较旧的 python 版本,还支持诸如 virtualenvwrapper 之类的包装器
【解决方案2】:

使用ls -la 命令检查您在/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ 中的权限。如果您看到 root 拥有的任何东西,这可能需要更改。我怀疑由于您以 root 身份安装了一些软件包,因此权限很奇怪并且找不到模块。如果是这种情况,请使用sudo 以您自己的用户身份重新安装软件包。

您应该检查的另一件事:正如博士所说,您需要确保您使用的是您认为的python 版本。通过运行which python 来检查这一点,告诉你你正在引用的那个位置,python --version 告诉你你正在使用哪个版本。如果不是 Python 3.6,那么您为不同版本的 Python 安装了 Django。在这种情况下,只需安装 Django 3.6 版即可。

为了将来的参考,Python 提供了一个名为 venv 的模块来防止这样的版本错误。更多信息可以在here找到。

【讨论】:

    【解决方案3】:

    您似乎正在尝试在不使用 python 虚拟环境的情况下创建或处理 django 项目。我建议查看 python 3 venv 文档 (https://docs.python.org/3/library/venv.html)。然后专门为您的 Web 应用程序创建一个虚拟环境 (venv)。完成该项目的 venv 设置后,您可以将 django 安装到该 venv 中。

    【讨论】:

      【解决方案4】:

      在 MacOS 上,在命令前使用 sudo

      sudo django-admin startproject myproject
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-03
        • 2017-03-21
        • 2010-09-23
        • 2017-08-15
        • 2023-01-20
        • 2014-12-25
        • 2017-01-20
        • 2010-10-25
        相关资源
        最近更新 更多