0

所以我有两个文件:文件 1 中有这个方法:

import MyGlobals
global old_function
def init():
    import ModuleB
    global old_function
    MyGlobals.SomeNumber = 0
    old_function = ModuleB.someClass.function
    ModuleB.someClass.function = someNewFunction

文件 2 有一个类“someClass”和一个类“someOtherClass”。话虽如此。当我在我的计算机上运行我的代码时,它工作得很好,它可以满足我的期望。当我在我的朋友计算机上运行此代码时,它是具有相同 python 版本 2.5.4 的相同版本的 windows 7,并且使用相同的代码(在两者的拇指驱动器上)它会收到错误“模块不包含 someClass”

我希望这对我想说的话有意义。它与工作相关,因此代码片段不会大声。这让我非常困惑为什么会这样。我什至尝试“从 ModuleB 导入 someClass”来查看 someClass 是否可以工作,但它仍然说 someClass 不在 moduleB 中,而 someCLass 肯定在 moduleB 中......

任何想法将不胜感激!

4

1 回答 1

2

好吧,很明显您使用的是不同版本的ModuleB. 我会大胆猜测,即使您是从拇指驱动器运行代码,您也已经ModuleB.py在 PYTHONPATH 中放置了其他位置,并且它正在您的计算机上运行该版本,但不在您朋友的计算机上。这很容易检查:

import ModuleB
print ModuleB.__file__

我敢打赌,这不会打印出您的期望!

另一方面,您不需要global代码片段中的第一个声明——这已经是全局范围。

于 2010-08-12T19:47:27.723 回答