Python 2.7 - 在内存中保留包的两个工作版本

Python 2.7 - Keep two working versions of package in memory

是否可以在不破坏任何东西的情况下这样做:

import some
some_copy = some
print some.version  # v1.0

# modify code and reload package
# ...
print some.version  # v1.1
print some_copy.version  # v1.0

所以我想同时拥有两个不同版本的 module/package 运行(在一个进程中)。

假设您有两个脚本。第一个,叫some.py像这个

class some(object):
    def __init__(self):
        self.version = '1.0'

还有一个叫 wcode.py。执行中

import some
some1 = some##.some()

raw_input("Waiting for you to change '1.0' into '1.1'.\nPress ENTER when done.")

reload(some)
some2 = some##.some()

print(some1().version)
print(some2().version)

打印

1.0
1.0

为什么?仅仅是因为 some 的导入定义被覆盖了。这意味着您可能想要实例化它以保持其方法定义为第一个版本 class。如下

import some
some1 = some.some()

raw_input("Waiting for you to change '1.0' into '1.1'.\nPress ENTER when done.")

reload(some)
some2 = some.some()

print(some1.version)
print(some2.version)

打印

1.0
1.1

所以答案是NOconditionnally,你想做的是不可能的在实例化你的第一个版本class之前重新加载模块。如上所述,实际上。请注意,为什么你想要这样做超出了我的范围。但你可能有充分的理由。