这是我的设置:Mac,运行OS X Tiger。 Windows XP在虚拟机中运行(Parallels)。 Windows XP将我的Mac主目录映射为网络驱动器。
我的Mac主目录的目录中有两个文件:
pass
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
如果我尝试从控制台导入foo(在Windows下从同一目录运行python),一切都很好:
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相关的环境变量。
有什么想法吗?
答案 0 :(得分:2)
添加import sys;将sys.path打印到test.py的开头。查看失败案例中的打印内容。如果“。”不在列表中,这可能是你的问题。
答案 1 :(得分:1)
随机猜测:foo.py的权限是否可从Windows客户端访问? (例如,尝试使用虚拟机中的记事本打开)。
如果没关系,请尝试运行:
python -v -v test.py
并查看输出(或者,设置PYTHONVERBOSE = 2)。这应列出它尝试从中导入foo的所有位置。将其与工作机器上的类似迹线进行比较可能会给出一些进一步的线索。