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之前重新加载模块。如上所述,实际上。请注意,为什么你想要这样做超出了我的范围。但你可能有充分的理由。
是否可以在不破坏任何东西的情况下这样做:
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之前重新加载模块。如上所述,实际上。请注意,为什么你想要这样做超出了我的范围。但你可能有充分的理由。