【问题标题】:ModuleNotFoundError while module was installed using pip使用 pip 安装模块时出现 ModuleNotFoundError
【发布时间】:2020-10-14 12:14:20
【问题描述】:

这是一个非常奇怪的情况。我使用 django 和 venv 已经有一段时间了,在我最后一次提取代码时,在尝试运行 python manage.py collectstatic 时,我遇到了 ModuleNotFoundError。但是,该模块已安装,如果我尝试重新安装它,pip 会告诉我我已经拥有它。

奇怪的是我看到 importlib 使用我的系统 python 路径(“/usr/lib/python3.6...”),我认为它应该是我的 virtualenv 路径...

如果我运行 which python,我会得到正确的 venv python 路径...

这是我得到的错误:

File "/home/ubuntu/venv/lib/python3.6/site-packages/django/apps/config.py",
   line 90, in create
       module = import_module(entry)   
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in
   import_module
       return _bootstrap._gcd_import(name[level:], package, level)   
File "<frozen importlib._bootstrap>", line 994, in _gcd_import   
File "<frozen importlib._bootstrap>", line 971, in _find_and_load   
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
   ModuleNotFoundError: No module named 'django-mailbox'

【问题讨论】:

    标签: python django pip virtualenv


    【解决方案1】:

    您可能使用pip install django 安装了django。这将安装与您的路径中的 pip 可执行文件相对应的 Python 安装模块。如果您安装了多个 Python 版本,则可能是 pip 命令指向您的 Python 3.5 安装(例如),而 python 命令指向您的 Python 3.6 安装。

    为了确保您为正确的 Python 版本安装软件包,而不是:

    pip install <package>
    

    使用:

    python -m pip install <package>
    

    或者,如果您想使用特定的 Python 版本:

    python3.6 -m pip install <package>
    

    (在后一种情况下,您应该使用python3.6 your_application.py 运行您的应用程序)

    【讨论】: