pytest не может импортировать модуль, установленный через pip и содержащий символы подчеркивания

Я привык видеть ошибки импорта собственных модулей. Но на этот раз речь пойдет о модулях, устанавливаемых через pip и находящихся в site-packages.

Вот тестовый файл, удаленный из всего, кроме импорта:

import flask
import pygments
from flask_restful import Resource, Api
#from weather_tool import *
#from flask_restless import *

при запуске pytest:

Traceback:
test_MonAPPflaskRest.py:3: in <module>
from flask_restful import Resource, Api

E ModuleNotFoundError: нет модуля с именем «flask_restful»

На самом деле, каждый модуль с символом подчеркивания не будет работать!!!

flask_restless не сможет импортировать в.

Но он работает при выполнении вне pytest или просто в оболочке python...


person stockersky    schedule 31.10.2017    source источник
comment
Как вы установили flask и pygments? Все ли пакеты установлены через pip ?   -  person Soumendra    schedule 31.10.2017
comment
как вы проводите тесты?   -  person Macintosh_89    schedule 01.11.2017
comment
Все модули установлены pip. Чтобы выполнить тесты, я захожу в каталог модулей и запускаю pytest. Мне интересно, если это не проблема локалей или что-то в этом роде...   -  person stockersky    schedule 01.11.2017


Ответы (3)


Хорошо, я прошел через это.

Собственно Анаконда была установлена. Отсюда с этим проблем нет.

Я установил Python из исходного кода, как я привык делать на платформе Linux, и он работает нормально, как и ожидалось.

Я узнал, что pytest не является списком пакетов, установленных через pip. Кажется, Anaconda предоставляет установку pytest по умолчанию. Возможно, что-то не так с этой версией. (which pytest вернет файл pystest в каталоге bin python.

На самом деле, простой pip install pytest в вашем virtualenv «перезапишет» эту — возможно, беспорядочную — версию pytest.

Однако вызов pytest по-прежнему не будет работать. Вы должны использовать пользователя py.test.

Я знаю, что это в значительной степени эмпирически. Но это все...

person stockersky    schedule 03.11.2017
comment
У меня такая же ситуация (Anaconda), я уже установил pytest через pip (внутри conda env), но действительно pytest не работает с ModuleNotFoundError (для меня flask_sqlalchemy), но работает при вызове как py.test. :( - person Jules Olléon; 05.12.2017

Я получил аналогичную ошибку при импорте стокера (не удалось найти модуль стокера). Попробуйте добавить свой «каталог кода» в «sys.path», где python ищет модули, и тогда он сможет импортировать.

Дополнительные сведения: https://bic-berkeley.github.io/psych-214-fall-2016/sys_path.html

Я использовал код:

 >>> import sys
   >>> sys.path.append('code')    # code = the directory where your module is saved
   >>> # Now the import will work
   >>> import a_module           # a_module = the module you are trying to import
person Bhrigu Bhanot    schedule 27.09.2018

Я также столкнулся с той же проблемой при установке в виртуальной среде. Я деактивировал виртуальную среду, установил flask-restful из PIP, а затем активировал виртуальную среду. Проблема решена.

person Vinay Namadi    schedule 12.06.2021