Модуль Python Coverage.py - ошибки импорта при запуске скрипта - PullRequest
3 голосов
/ 15 августа 2011

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

У меня проблемы с корректной работой модуля "охват" для Python.

У меня нет прав на изменение или добавление в каталог Python, поэтому я не могу установить easy_install для настройки покрытия. Обойти это, добавив каталог покрытия к моему пути Python. Покрытие работает нормально, ввод covereage --version в оболочку выводит версию. coverage help отображает все доступные команды. Все вроде нормально. Я могу нормально работать с небольшими простыми сценариями.

Тем не менее, при запуске большого скрипта с несколькими импортами в 5 модулях (скрипт, который был протестирован как работающий), при запуске команды с coverage run [normal commands], скрипт выполняется и завершается ошибкой, , потому что некоторые модули не может быть найден.

Вот разбивка -

Командная строка без покрытия (работает нормально):

Я вызываю скрипт, выполнив: ./script_name.py arg1 arg2 arg3

Когда я пытаюсь запустить скрипт, введя: python script_name.py arg1 arg2 arg3, скрипт завершается ошибкой, не удается импортировать модули:

    Error message:
        ImportError: No module named cx_Oracle

Командная строка с покрытием:

coverage run ./script_name.py arg1 arg2 arg3

    "No file to run: 'main.py'"

coverage run {[full_path_to_module_name}./script_name.py arg1 arg2 arg3

    Now we are getting somewhere. Coverage is clearly invoked and working, put I get that import error:

Error message:
    ImportError: No module named cx_Oracle

Может ли кто-нибудь помочь мне с этой проблемой?

Ответы [ 2 ]

1 голос
/ 15 августа 2011

Хорошая новость заключается в том, что при явном запуске «python» и с cover.py получается тот же результат. Плохая новость в том, что результатом является сообщение об ошибке.

Похоже, у вас более одной установки Python. Один найден "./script_name.py", другой найден "python ./script_name.py".

Чтобы диагностировать проблему, добавьте эти строки в начало script_name.py:

.
import sys
print sys.executable
print "\n".join(sys.path)

Это покажет вам вызываемый исполняемый файл Python и путь поиска модулей. Запуск вашего скрипта в обоих направлениях покажет вам разные результаты, и вы сможете понять, что происходит.

0 голосов
/ 18 июля 2019

Я думаю, что у меня была похожая проблема, и мне удалось ее решить, запустив покрытие следующим образом:

python -m coverage run [normal commands]

Конкретно в моем случае это было

python -m coverage run -m unittest discover

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

...