Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “重新导入模块”;作为「;_Python_Python 3.x - Fatal编程技术网

Python “重新导入模块”;作为「;

Python “重新导入模块”;作为「;,python,python-3.x,Python,Python 3.x,关于如何重新导入模块(例如,在编程过程中更改模块后),我找到了很多答案,但我想将其重新导入为。换言之,我想重复一遍 import main.mydir.mymodule as mymod 并在不重新启动控制台的情况下将更改合并到控制台中 当我尝试重新加载时,我当前尝试的是以下内容。我可能会跑 import main.warp.optimisation as opt res = opt.combiascend(par) 然后我做了一些更改,例如我在方法combiascend的末尾放了一个pri

关于如何重新导入模块(例如,在编程过程中更改模块后),我找到了很多答案,但我想将其重新导入为
。换言之,我想重复一遍

import main.mydir.mymodule as mymod
并在不重新启动控制台的情况下将更改合并到控制台中

当我尝试重新加载时,我当前尝试的是以下内容。我可能会跑

import main.warp.optimisation as opt
res = opt.combiascend(par)
然后我做了一些更改,例如我在方法
combiascend
的末尾放了一个
print('Yes,它成功了')
,然后我运行

import importlib
import main
importlib.reload(main)
importlib.reload(main.warp.optimisation)
opt = main.warp.optimisation
res = opt.combiascend(par)

这不起作用:我没有收到任何错误,但我在模块
优化中所做的更改没有应用。在我的示例中,我没有得到相应的输出。

在使用其他答案之一“refresh”
main.mydir.mymodule
后,只需执行以下操作:

mymod = main.mydir.mymodule
看起来
importlib
也会更新您提供给它的引用,因此如果原始导入使用了别名,您只需重新导入别名即可。给定空的
foo/\uuuu init\uuuuuuuupy
foo/bar/\uuuuuuuu init\uuuuuuuuuuuupy
,以及包含以下内容的
foo/bar/test.py

def func():
    print("a")
然后我得到这个:

>>> import foo.bar.test as mod
>>> mod.func()
a
>>> import importlib
>>> # (Updating the file now to print b instead)
>>> importlib.reload(mod)
<module 'foo.bar.test' from '/home/aasmund/foo/bar/test.py'>
>>> mod.func()
b
>>将foo.bar.test作为mod导入
>>>mod.func()
A.
>>>导入导入库
>>>#(现在更新文件以打印b)
>>>导入库重新加载(mod)
>>>mod.func()
B

这真的有效吗?我从未以这种方式导入模块(但这并不意味着它是错误的)。使用importlib.reload(mymod)不是更好吗?@tnknapp:这不会(重新)导入模块(我说有必要先使用您选择的机制执行重新加载)-它要求已经导入了
main.mydir.mymodule
,但它确实为它创建了一个别名。尝试导入操作系统路径;p=os.path;印刷品(p类);print(p.join(“a”,“b”))
,它打印
a/b
@AasmundEldhuset:我不确定我做错了什么。我在我的问题中添加了一些代码。它不起作用是什么意思?你犯了什么错误?@sophros:我澄清了。