Класс Python в модуле загружается не на одном компьютере, а на другом - PullRequest
0 голосов
/ 12 августа 2010

Итак, у меня есть два файла: В файле 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". Что, как говорится. Когда я запускаю свой код на своем компьютере, он прекрасно работает и делает то, что я ожидаю. Когда я запускаю этот код на моем компьютере друзей, который представляет собой ту же сборку Windows 7 с той же версией Python 2.5.4 и с тем же кодом (на флэш-накопителе для обоих), он получает ошибку «Модуль не содержит someClass»

Надеюсь, это имеет смысл в том, что я пытаюсь сказать. Это связано с работой, поэтому фрагменты кода не являются громкими. На этот раз я чрезвычайно озадачен тем, почему это так. Я даже пытался "из ModuleB import someClass" посмотреть, будет ли работать someClass, но он все еще сказал, что someClass не находится в moduleB, в то время как someCLass определенно находится в moduleB ...

Любые идеи будут высоко оценены!

1 Ответ

2 голосов
/ 12 августа 2010

Ну, совершенно очевидно, что вы используете разные версии ModuleB.Я бы рискнул предположить, что даже если вы запускаете код с флешки, вы поместили ModuleB.py где-то еще в вашу PYTHONPATH, и она запускает эту версию на вашем компьютере, но не на компьютере вашего друга.Это легко проверить:

import ModuleB
print ModuleB.__file__

Могу поспорить, что не напечатает то, что вы ожидаете!

На другой ноте вам не нужно первое global объявление в вашем фрагменте кода - это уже глобальная область.

...