【问题标题】:Import tries to import a different file than I specified导入尝试导入与我指定不同的文件
【发布时间】:2012-03-15 16:36:57
【问题描述】:

我有一个名为 baseFunctions.py 的文件,我将其更改为 elementFunctions.py。使用 parsePeaksMzML.py 导入 elementFunctions 给了我奇怪的打印语句,特别是因为我在 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

不知何故 import elementFunctions 指向 import baseFunctions (我不知道为什么)并且删除和重新制作 elementFunctions.py 没有效果。我在谷歌搜索或堆栈溢出时找不到类似的东西,所以我有点难过。

我怀疑这是 eclipse 的问题,但我不确定。


编辑:
更奇怪的是,当我从以下位置导入 parsePeaksMzML.py 时出现错误 test_parsePeaksMzML.py,但是当我直接运行 parsePeaksMzML.py 时没有。

编辑2:
从命令行运行会出现同样的错误:

-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$ 

【问题讨论】:

  • 发布在 Eclipse IDE 中进行 Project / Clean 之后发生的事情。
  • 可以通过独立运行代码来测试IDE是否负责。请报告结果;那么我们就知道是否要对您的 IDE 或您的导入进行故障排除。
  • 我把结果放到edit2下,还是一样的错误。

标签: python eclipse file import


【解决方案1】:

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

你描述的症状很奇怪,所以我不是 100% 确定问题是什么。不管怎样,试着清理你的工作区,让我们知道事情的进展情况。

【讨论】:

  • 首先我更改了文件的名称,但是当它不起作用时,我复制了代码,删除了文件,并将代码放入了一个新制作的文件中。我从文件夹中删除了所有 .pyc 文件并清理了构建,但它仍然给出了同样的错误。
  • 在我没有查看的文件夹中的某处有一个 parsePeaksMzML.pyc 文件(仍然不知道它为什么存在或为什么导入),删除它解决了问题。谢谢。
【解决方案2】:

请尝试一揽子删除所有.pyc 文件,看看是否能将其清除。如果没有,这里有几种可能性:

  • 您的$PYTHONPATH 指向的来源与您预期的不同。 (尽管这可能不是全部的解释。)
  • elementFunctions/__init__.py 中的代码正在尝试导入 baseFunctions
  • 某处的代码正在使用exec 语句进行导入,或使用内置的__import__ 函数动态导入baseFunctions(这可能会使指令的来源难以追查)。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2010-11-16
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多