【问题标题】:Bizarre python ImportError奇怪的python ImportError
【发布时间】:2008-10-31 00:54:55
【问题描述】:

这是我的设置:一台运行 OS X Tiger 的 Mac。在虚拟机 (Parallels) 中运行的 Windows XP。 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

如果我尝试从控制台导入 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相关的环境变量。

有什么想法吗?

【问题讨论】:

    标签: python import windows-xp


    【解决方案1】:

    添加导入系统;打印 sys.path 到 test.py 的开头。看看它在失败的情况下打印出什么。如果 ”。”不在列表中,这可能是您的问题。

    【讨论】:

    • '.'不在列表中,但 CWD 是第一个条目(我假设它是扩展的 '.')。
    • 我升级了,但通常执行模块的目录总是添加到 pythopath。并非总是添加 CWD。在这种情况下,似乎 CWD 和模块的目录是同一个东西,所以它不相关。
    【解决方案2】:

    随机猜测:是否可以从 Windows 客户端访问 foo.py 的权限? (例如尝试从虚拟机用记事本打开)。

    如果没问题,请尝试运行:

    python -v -v test.py
    

    并查看输出(或者,设置 PYTHONVERBOSE=2)。这应该列出它尝试从中导入 foo 的所有位置。将其与工作机器上的类似痕迹进行比较可能会提供更多线索。

    【讨论】:

    • 权限似乎很好(从双方)。 'python -v -v test.py' 表明它不在 sys.path[0] 中查找; otoh,如果我只运行“python -v -v”然后在提示符下键入“import foo”,它会在第一个出现的位置找到它。
    • 这很奇怪。我想不出有什么会导致它跳过 sys.path 中的条目(尤其是在交互时表现不同的情况下)。我能想到的唯一方法是尝试缩小原因(例如,它可以在其他网络驱动器上重现,还是在删除 init.py 之后)
    猜你喜欢
    • 2020-06-06
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2020-10-22
    • 2013-04-01
    • 2015-03-24
    相关资源
    最近更新 更多