ModuleNotFoundError: нет модуля с именем «pytest» - PullRequest
2 голосов
/ 12 апреля 2019

После установки модуля pytest в виртуальной среде я использовал код python для вызова и запуска подсказки, чтобы найти модуль pytest.

Я установил модуль pytest вне виртуальной среды.Я могу вызвать его как обычно с python.

import pytest


def test_main():
    assert 5!=5

if __name__ == "__main__":
    pytest.main()

Ошибка выглядит следующим образом:

[Running] python -u "d: \ MyPytest \ test_sample.py" Traceback (последний вызов был последним): Файл "d: \ MyPytest \ test_sample.py", строка 1, в импорте pytest ModuleNotFoundError: Ни один модуль с именем 'pytest' [Done] не завершился с кодом = 1 в течение 0,185 секунд

1 Ответ

2 голосов
/ 12 апреля 2019

TLDR: Я подозреваю, что вы установили pytest на системном уровне python site-пакеты, поэтому, когда вы пытаетесь запустить pytest, внутри вашего virtualenv выдается ModuleNotFoundError так как в вашем virtualenv эта зависимость не установлена. Виртуальные среды дают вам изолированную среду, так что вы можете экспериментировать с потенциальными python библиотеками для вашего проекта, но они автономны и не имеют доступа к сторонним библиотекам Python системного уровня.

Обычно ImportError вызывается, когда в операторе импорта возникают проблемы с успешным импортом указанного модуля . Если проблема связана с неверным или неправильным путем , это вызовет ModuleNotFoundError.

Из вашего вопроса неясно, где вы установили pytest, так как вы сказали, что установили его в virtualenv, а затем сказали, что установили его вне вашего virtualenv на системном уровне python site-packages .. Итак, я расскажу, как заставить pytest работать в virtualenv, так как это, вероятно, то, что вы хотите:

Virtualenv хороши тем, что они предоставляют изолированную среду для работы с библиотеками python, безопасную от путаницы в настройках python системного уровня. Теперь ModuleNotFoundError добавляется в ваш virtualenv, потому что не может найти модуль pytest для теста, который вы пытаетесь запустить. Возможно, вы можете попробовать , активируя virtualenv и переустановить pytest в этом virtualenv и посмотреть, решит ли этот способ вашу проблему:

Активируйте свой virtualenv:

# Posix systems
source /path/to/ENV/bin/activate

# Windows
\path\to\env\Scripts\activate

Установите pytest в пределах вашего virtualenv:

Примечание : перед установкой pytest вы должны увидеть свое имя virtualenv's в скобках. Для этого примера предположим, что вы создали виртуальную среду с именем: env

(env) pip install pytest

Теперь pytest будет доступно для вас в вашем virtualenv. Для получения дополнительной информации ознакомьтесь с документами virtualenv . Я также предложил бы изучить virtualenvwrapper, , который приятно обернулся вокруг virtualenv, для более удобных команд для активации / деактивации virtualenvs.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...