2011-08-15 2 views
2

Первый вопрос, поэтому, пожалуйста, расскажите мне, если я совершил ошибку новобранец или неясность!Coverage.py Модуль Python - ошибки импорта при запуске скрипта

У меня возникли проблемы с правильной работой модуля «покрытия» для 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 

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

ответ

1

Хорошая новость заключается в том, что она работает с «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

Hi Ned. Спасибо за вашу поддержку и хорошо сделано на отличном пакете. Я использовал его локально без этих проблем, и он творит чудеса. Мне было интересно, можете ли вы направить меня в нужное место, чтобы решить эту проблему. Вы правы, что вызов «python [имя скрипта]» без модуля выдает те же ошибки. В идеале я хотел бы просто вызвать «покрытие run /{full_path_to_script_name.py» »и запустить его, но я получаю сообщение« Нет файла для запуска: »/{full_path_to_script_name.py}. Любые мысли? Команда отлично работает без «покрытия». Спасибо – mamoma

+0

Не беспокойтесь, исправил это! Я думаю, что проблема была совершенно уникальной для среды, в которой я работаю, но мне пришлось изменить несколько путей в файлах и включить некоторые другие. Бит лабиринт , но с удовольствием разработаем, если это принесет пользу кому-то другому. – mamoma

+0

@NedBatchelder: Я думаю, что у меня такая же проблема, и ваш ответ помог ее диагностировать.Я запускаю внутри 'virtualenv' и' python -c 'import sys; print (sys.executable) '' дает мне местоположение в virtualenv, но когда я выполняю его с помощью 'span run', он показывает мне системный интерпретатор. Не могли бы вы рассказать о том, как с этим бороться, и попросите «охват» использовать virtualenv, который в настоящее время активирован? – Tadeck

Смежные вопросы