Python 运行解释器时导入某些模块时出错

Python 运行解释器时导入某些模块时出错,python,python-3.x,pip,setuptools,Python,Python 3.x,Pip,Setuptools,基本数据: ❯ 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

基本数据:

❯ 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
My 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 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
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
这里我需要解释一下,我使用它来控制我的Python版本

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


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

谢谢你的评论,它迫使我进行更多的调查!我找到了解释。关于
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
这里我需要解释一下,我使用它来控制我的Python版本

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


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

也许可以尝试
python-mpip安装
。这是一个经典的解决方案,有时会奏效。你确定你的pip会给你来自venv的包吗?你能试试哪个pip吗?@Biarys 100%确定,看看我的命令的结果。你用不同的Python运行你的flask应用程序,可能是全局的。@phd不,我检查了,我激活了venv。无论如何,它会很快失败。也许可以尝试
python-mpip安装
。这是一个经典的解决方案,有时会奏效。你确定你的pip会给你来自venv的包吗?你能试试哪个pip吗?@Biarys 100%确定,看看我的命令的结果。你用不同的Python运行你的flask应用程序,可能是全局的。@phd不,我检查了,我激活了venv。无论如何,它会很快失败。