奇怪的Python导入错误

3 投票
2 回答
1451 浏览
提问于 2025-04-11 09:32

这是我的设置:我在使用一台Mac,运行的是OS X Tiger系统。在虚拟机里运行Windows XP(使用Parallels)。Windows XP把我的Mac主目录映射成了一个网络驱动器。

在我Mac主目录的一个文件夹里,有两个文件:

foo.py

pass

test.py

import foo

当我在虚拟机里输入'python test.py'来运行test.py时,出现了这个:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    import foo
ImportError: No module named foo

如果我在控制台(在Windows下的同一目录运行python)尝试导入foo,一切正常:

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import foo
>>>

如果我用Mac的python运行test.py,也没有问题。

如果我把test.py和foo.py复制到另一个目录,我可以在Windows下顺利运行test.py。

原始目录里有一个init.py文件,但它是空的。此外,把它和其他文件一起复制并没有影响前面的情况。

没有设置任何与python相关的环境变量。

有什么想法吗?

2 个回答

1

我随便猜一下:你在Windows客户端上能访问foo.py的权限吗?(比如试着从虚拟机用记事本打开它)。

如果可以的话,试着运行:

python -v -v test.py

然后看看输出结果(或者设置PYTHONVERBOSE=2)。这样可以列出它尝试从哪些地方导入foo。把这个结果和正常工作的机器上的类似记录对比一下,可能会给你一些额外的线索。

2

在test.py的开头加上这两行代码:import sys; print sys.path。然后看看在出错的情况下,它打印出来的内容。如果列表中没有“.”,那可能就是你遇到的问题所在。

撰写回答