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
.
Надеюсь, это поможет!