python - 运行解释器时导入某些模块时出错
问题描述
基本数据:
❯ 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
和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
二进制文件...
推荐阅读
- swift - 在 iOS 图表上绘制大型数据集时减少延迟
- ios - React Native - 使用 Apple ID 登录的库是什么
- javascript - 使用 JavaScript 从上下文菜单中截取块
- java - 带有查询的数组列表搜索仅在最后一次加载
- python-3.x - 在熊猫中,为什么我会收到类似“'SeriesGroupBy'对象没有属性'Mean'之类的错误
- node.js - TS2339:“模型”类型上不存在属性“comparePassword”
' - ibm-cloud - POST 图像抛出“internal_error”
- perl - Getopt::Long::Descriptive 中的 one_of 功能有问题
- javascript - 等待 redux 状态满足条件
- java - 在eclipse中克隆Git存储库后,抛出错误“错误:无法找到或加载主类tests.Baseclass”