Импорт пытается импортировать файл, отличный от указанного мной - PullRequest
0 голосов
/ 15 марта 2012

У меня был файл с именем baseFunctions.py, который я изменил на elementFunctions.py. Импорт elementFunctions с parsePeaksMzML.py дал мне странные операторы печати, тем более что у меня не было никаких операторов print в elementFunctions.py. Пошаговое выполнение кода с помощью отладчика Eclipses вместо

import elementFunctions

как сказано в parsePeaksMzML.py, на самом деле это

import baseFunctions

Я подумал, что с переименованием произошла странная путаница, поэтому я скопировал весь код из elementFunctions.py, удалил файл, создал новый файл и вставил весь код в новый файл. Тем не менее я получил те же странные ошибки. Глядя в папку, у меня все еще был файл baseFunctions.pyc, поэтому я удалил его. Повторный запуск кода дал мне:

Traceback (most recent call last):
  File "/homes/ndeklein/workspace/MS/Trunk/PyMS_dev/pyMS/test/test_parsePeaksMzML.py", line 25, in <module>
    import parsePeaksMzML
  File "/homes/ndeklein/workspace/MS/Trunk/PyMS_dev/pyMS/test/parsePeaksMzML.py", line 12, in <module>
    import elementFunctions
ImportError: No module named baseFunctions

Каким-то образом импорт elementFunctions указывает на импорт baseFunctions (я понятия не имею, почему), а удаление и переопределение elementFunctions.py не имеет никакого эффекта. Я не могу найти ничего похожего на поиск в Google или переполнение стека, поэтому я немного озадачен здесь.

Я подозреваю, что это проблема с затмением, но я не уверен.


редактирование:
Что делает его еще более странным, я получаю сообщение об ошибке при импорте parsePeaksMzML.py из test_parsePeaksMzML.py, но не при непосредственном запуске parsePeaksMzML.py.

edit2:
Запуск из командной строки выдает ту же ошибку:

-bash-3.2$ python test_parsePeaksMzML.py
Traceback (most recent call last):
  File "test_parsePeaksMzML.py", line 26, in <module>
    import parsePeaksMzML
  File "/homes/ndeklein/workspace/MS/Trunk/PyMS_dev/pyMS/test/parsePeaksMzML.py", line  12, in <module>

ImportError: No module named baseFunctions
-bash-3.2$ 

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Попробуйте выполнить полное удаление всех .pyc файлов и посмотрите, не поможет ли это. Если нет, вот несколько возможностей:

  • Ваш $PYTHONPATH указывает на источник, отличный от ожидаемого. (Хотя это, вероятно, не будет полным объяснением.)
  • Код в elementFunctions/__init__.py пытается импортировать baseFunctions.
  • Код где-то использует оператор exec для импорта или встроенную функцию __import__ для динамического импорта baseFunctions (что может затруднить поиск источника директивы).
1 голос
/ 15 марта 2012

Если вы изменили имя файла, возможно, в вашей рабочей области есть какой-то старый .pyc.Я предполагаю, что вы используете плагин PyDev в Eclipse;Я не использовал его некоторое время, но вы должны быть в состоянии сделать проект -> Очистить.Если это не поможет, попробуйте вручную удалить все файлы .pyc в рабочей области.

Описанные вами симптомы очень странные, поэтому я не уверен на 100%, в чем проблема.В любом случае, попытайтесь очистить свое рабочее место и дайте нам знать, как все будет развиваться.

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