Ответ 1
Я не уверен, почему он считает, что файл существует, но вы можете сказать, что cover.py игнорирует эти проблемы с помощью переключателя coverage xml -i
.
Если вы хотите отследить ошибку, напишите мне строку (ned at ned batchelder com).
Я успешно запустил сборку прошлой ночью. Сегодня утром я встал и побежал еще без изменения конфигурации или изменения какого-либо исходного кода. Теперь моя сборка не работает с сообщением "Нет источника для кода" при запуске моих носетов с охватом.
NoSource: No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/tests/unit/util.py'
. . .
No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/__init__.py'
Единственный ключ, который у меня есть, это то, что файлы, которые он говорит, что они не могут найти, отсутствуют, но они никогда не были, и они не должны быть. Например, в последнем рабочем пространстве Hudson не является модулем Python, поэтому __init__.py
там не будет.
Обновление: Я подтвердил, что это не проблема Хадсона. Когда я запускаю nostests с охватом в самой директории, я вижу похожие сообщения. Опять же, файлы, на которые распространяется покрытие, никогда не начинались, делая это очень озадачивающим.
Я не уверен, почему он считает, что файл существует, но вы можете сказать, что cover.py игнорирует эти проблемы с помощью переключателя coverage xml -i
.
Если вы хотите отследить ошибку, напишите мне строку (ned at ned batchelder com).
Убедитесь, что там нет файла .pyc, который, возможно, существовал в прошлом.
Сводка. Существующие .coverage данные хранятся при запуске nosetests --with-coverage
, поэтому сначала удалите его.
Детали. Я тоже просто столкнулся с этим через Хадсон и носетисты. Эта ошибка исходила от coverage/results.py:18
(охват 3.3.1 - было 3 места, которые поднимали эту ошибку, но это было актуально). Он пытается открыть файл .py, соответствующий модулю, который был фактически прослежен. Небольшая демонстрация:
$ echo print > hello.py
$ echo import hello > main.py
$ coverage run main.py
$ rm hello.py
$ coverage xml
No source for code: '/tmp/aoeu/hello.py'
По-видимому, у меня был файл stopwords.pyc, который был выполнен/прорисован, но не stopwords.py. Но нигде в моем коде не было импортирования стоп-слов и даже удаления .pyc, я все еще получил ошибку.
Простой strings .coverage
затем показал, что ссылка на stopwords.py все еще существует. nosetests --with-coverage
использует функции добавления или объединения покрытия, что означает, что старые данные .coverage все еще задерживаются. Действительно, удаление .coverage устраняет проблему.
Просто используйте аргумент '--cover-erase'. Он исправляет эту ошибку, и вам не нужно вручную удалять файлы покрытия
nosetests --with-coverage --cover-erase
Я бы настоятельно рекомендовал проверить помощь, чтобы увидеть, что другие аргументы, которые вам тоже не хватает, и не забывайте эти плагины либо
Проблема заключается в том, что файл .pyc
все еще существует.
Быстрое и грязное решение - удалить все .pyc
файлы в этом каталоге:
find . -name "*.pyc" -exec rm -rf {} \;
Возможно, это поможет, но сегодня я столкнулся с подобной ошибкой. И это ошибка разрешения. Мой код использует выписку от другого пользователя (по дизайну, вниз спросить), и мне нужно sudo, чтобы покрытие работало. Таким образом, ваша проблема может иметь что-то для этого.
Я столкнулся с этой проблемой, пытаясь запустить nosetests через setuptools. Как уже упоминалось, можно удалить существующие файлы .pyc, но это может быть громоздким.
Мне пришлось создать файл .coveragerc со следующим
[отчет]
ignore_errors = True
чтобы исправить эту ошибку.