导入尝试导入不同于我指定的文件

时间:2012-03-15 16:36:58

标签: python eclipse file import

我有一个名为baseFunctions.py的文件,我将其更改为elementFunctions.py。使用parsePeaksMzML.py导入elementFunctions给了我奇怪的print语句,特别是因为我在elementFunctions.py中没有任何print语句。使用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无效。我找不到这样的搜索谷歌或堆栈溢出,所以我有点难过这里。

我怀疑它是日食的问题,但我不确定。


编辑:
是什么让它更奇怪,我从导入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 个答案:

答案 0 :(得分:1)

如果您更改了文件名,可能是您的工作区中有一些旧的.pyc。我假设你在Eclipse中使用PyDev插件;我有一段时间没用过它,但你应该可以做一个项目 - &gt;清洁。如果这没有帮助,请尝试手动清除工作区中的所有.pyc文件。

您描述的症状非常奇怪,所以我不能100%确定问题所在。无论如何,尝试清理工作区并让我们知道事情的进展情况。

答案 1 :(得分:1)

请尝试全部删除所有.pyc个文件,看看是否清除了它。如果没有,这里有几个可能性:

  • 您的$PYTHONPATH指向的信息来源与您预期的不同。 (虽然这可能不是完整的解释。)
  • elementFunctions/__init__.py内的代码正在尝试导入baseFunctions
  • 代码某处使用exec语句进行导入,或使用内置__import__函数动态导入baseFunctions(这可能会导致指令的来源难以搜索向下)。