相关疑难解决方法(0)

覆盖Python中的命名空间

假设有一个文件夹'/ home/user/temp/a40bd22344'.该名称是完全随机的,并且每次迭代都会发生变化.我需要能够使用固定名称在Python中导入此文件夹,比如'project'.我知道我可以将此文件夹添加到sys.path以启用导入查找,但有没有办法用'project'替换'a40bd22344'?

也许在init .py中有一些聪明的黑客攻击?

添加:

它需要是全局的 - 也就是说,其他脚本通过标准加载'project':

import project
Run Code Online (Sandbox Code Playgroud)

必须正常工作,而是加载a40bd22344.

python python-import

13
推荐指数
3
解决办法
2万
查看次数

替换导入的模块依赖项

如此处所述,在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代替其使用somemodulesomefakemodule,而不改变其代码?也就是说,来自ClientCode.

python module python-2.7

8
推荐指数
1
解决办法
2112
查看次数

标签 统计

python ×2

module ×1

python-2.7 ×1

python-import ×1