奇怪的Python导入错误
这是我的设置:我在使用一台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。然后看看在出错的情况下,它打印出来的内容。如果列表中没有“.”,那可能就是你遇到的问题所在。