Ошибка при импорте некоторых модулей при запуске интерпретатора - PullRequest
1 голос
/ 01 мая 2020

Basi c data:

❯ 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. Пипс не l ie:

❯ 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"

Что я делаю не так?

1 Ответ

0 голосов
/ 02 мая 2020

Спасибо за все комментарии, это заставило меня расследовать намного больше! Я нашел объяснение. Все, что касается 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 двоичные файлы ...

...