【问题标题】:Error importing some modules not happening when running interpreter运行解释器时导入某些模块时出错
【发布时间】:2020-08-16 09:23:41
【问题描述】:

基本数据:

❯ python --version
Python 3.8.2

我有一个包含一些模块的 Python 项目。我使用venv,通常我从头开始这样做:

❯ deactivate; rm -rf .venv && python -m venv .venv && source .venv/bin/activate && pip install --upgrade pip wheel setuptools --no-cache-dir # re-create venv

并安装我的包:

❯ pip install . --no-cache-dir

我的 setup.py 文件包含以下内容:

...
# dependencies
    install_requires=[
        "Flask==1.1.2",
        "marshmallow-sqlalchemy==0.22.3",
        "gunicorn==20.0.4"
    ],
...

所有命令都正确执行。

但是当我执行我的 Flask 程序时(有或没有gunicorn),我得到这个错误:

...
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
ModuleNotFoundError: No module named 'marshmallow_sqlalchemy'
...

这对我来说没有意义,因为看看这些命令。 1. pip 不会说谎:

❯ pip list
Package                Version
---------------------- -------
click                  7.1.2
Flask                  1.1.2
my-package             0.0.1
gunicorn               20.0.4
itsdangerous           1.1.0
Jinja2                 2.11.2
MarkupSafe             1.1.1
marshmallow            3.5.2
marshmallow-sqlalchemy 0.22.3
pip                    20.1
setuptools             46.1.3
SQLAlchemy             1.3.16
Werkzeug               1.0.1
wheel                  0.34.2

这对我来说简直是致命的......这个直接解释器命令没有给出任何错误:

❯ python -c "from marshmallow_sqlalchemy import SQLAlchemyAutoSchema"

我做错了什么?

【问题讨论】:

  • 也许可以试试python -m pip install <module>。这是一个经典的解决方案,(有时)有效。
  • 你确定你的 pip 给你来自 venv 的包吗?你可以试试which pip吗?
  • @Biarys 100% 确定,看看我的命令的结果。
  • 你用不同的 Python 运行你的烧瓶应用程序,也许是全局的。
  • @phd 不,我检查过,我激活了 venv。无论如何,它会更快地失败。

标签: python python-3.x pip setuptools


【解决方案1】:

感谢所有 cmets,这迫使我进行了更多调查!我找到了解释。关于python 和pip 二进制文件的所有内容都可以:

❯ which python
{project_folder}/.venv/bin/python
❯ which pip
{project_folder}/.venv/bin/pip

但 flask 和 gunicorn 变量不会:

❯ which gunicorn
{HOME}/.pyenv/shims/gunicorn
❯ which flask
{HOME}/.pyenv/shims/flask

这里需要说明一下,我使用pyenv来控制我的Python版本。

这么说,我可以使用明确的venv 二进制文件、flask 和gunicorn 正确执行我的应用程序。

无论如何,我想了解为什么 pyenv 没有使用正确的 venv 二进制文件...

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2013-06-25
    • 1970-01-01
    • 2016-07-02
    • 2017-09-08
    • 2015-12-10
    相关资源
    最近更新 更多