繁体   English   中英

在 python 中,我应该生成什么代码来执行“从文件导入 *”?

[英]In python, what code should I generate to do "from FILE import *"?

我正在开发pythonizer ,这是一个将 perl 转换为 python 的程序,我正在寻找翻译语句“需要 FILENAME;” 至 python。 在这种情况下,我需要生成“from FILENAME import *”。 我想出了“来自文件名”部分(这里的BASENAME是没有路径或扩展名的FILENAME名):

from importlib.machinery import SourceFileLoader
module = SourceFileLoader(BASENAME, FILENAME).load_module()

并且import *部分编码为:

__import__(name, fromlist=['*'])

但是我该如何组合它们呢?

我在importlib._bootstrap中看到_handle_fromlist ,但在这里调用内部例程很可能不是正确的答案。

这是我关于实现这一点的第二个想法:

[_p, _m] = _prep_import(FILENAME)
sys.path[0:0] = _p
__import__(_m, fromlist=['*'])
sys.path.pop(0)

其中_prep_import()查看 FILENAME(可能是一个表达式),删除任何扩展名,从中获取任何路径信息到第一个结果中,并将基本名称作为第二个结果。 请注意, FILENAME 可能包含破折号( - ),我相信__import__可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM