奇怪的Python导入错误

0 投票
1 回答
1074 浏览
提问于 2025-04-17 10:22

我刚开始学习Python,遇到了ImportError(导入错误),感觉自己试过了文档里和这个网站以及其他地方的各种解决办法,但还是没解决。

我的代码结构是这样的:

 vsm
 |
 |______bin
 |      vsmx.py
 |______site-packages
          __init__.py
        |
        |_____libs
             __init__.py
             monitor.py

在monitor.py文件里,我有一个叫getStr的函数,而两个__init__.py文件是空的。

我把PYTHONPATH设置成了vsm/site-packages和vsm/site-packages/libs。当我在命令行运行python bin/vsmx.py时,出现了:

Traceback (most recent call last):
  File "bin/vsmx.py", line 15, in <module>
    from libs.monitor import getStr
   File "/var/src/vsm/bin/vsmx.py", line 15, in <module>
     from libs.monitor import getStr
ImportError: No module named monitor

不过,当我尝试在交互模式下运行时,似乎又能正常工作。我在Windows和Linux上都试过,使用的是Python 2.6.1。

如果能给我一些建议,我会非常感激。

1 个回答

1

ImportError: No module... 这个错误通常是个比较难懂的问题,意思是你有循环导入的情况。

模块 a.py:

 import b

模块 b.py:

 import a

然后是 main.py:

 import a

这应该会导致 ImportError: No module named a,因为 a 在导入 b 的时候,b 还没准备好就想要导入 a。

撰写回答