假设有一个文件夹'/ home/user/temp/a40bd22344'.该名称是完全随机的,并且每次迭代都会发生变化.我需要能够使用固定名称在Python中导入此文件夹,比如'project'.我知道我可以将此文件夹添加到sys.path以启用导入查找,但有没有办法用'project'替换'a40bd22344'?
也许在init .py中有一些聪明的黑客攻击?
添加:
它需要是全局的 - 也就是说,其他脚本通过标准加载'project':
import project
Run Code Online (Sandbox Code Playgroud)
必须正常工作,而是加载a40bd22344.
如此处所述,在python中,可以使用以下命令替换当前模块实现sys.modules:
import somemodule
import sys
del sys.modules['somemodule']
sys.modules['somemodule'] = __import__('somefakemodule')
Run Code Online (Sandbox Code Playgroud)
但是如果import somemodule在另一个导入模块的代码中完成它则不起作用:

在这个例子中:
CustomModule
import somemodule
def f():
print(somemodule.someFunction())
Run Code Online (Sandbox Code Playgroud)
ClientCode
from CustomModule import f
import sys
del sys.modules['somemodule']
sys.modules['somemodule'] = __import__('somefakemodule')
f() #Will use `somemodule.someFunction`
Run Code Online (Sandbox Code Playgroud)
呼叫f将使用somemodule.someFunction,而不是somefakemodule.someFunction
是否有可能使CustomModule代替其使用somemodule的somefakemodule,而不改变其代码?也就是说,来自ClientCode.