【发布时间】:2022-01-04 04:44:05
【问题描述】:
我正在开发pythonizer,这是一个将 perl 翻译成 python 的程序,我正在寻找翻译语句“require FILENAME;”到蟒蛇。在这种情况下,我需要生成“from FILENAME import *”。我想出了“来自文件名”部分(这里 BASENAME 是 FILENAME 没有路径或扩展名):
from importlib.machinery import SourceFileLoader
module = SourceFileLoader(BASENAME, FILENAME).load_module()
import * 部分编码为:
__import__(name, fromlist=['*'])
但是我该如何组合它们呢?
我在importlib._bootstrap 中看到了_handle_fromlist,但在这里调用内部例程很可能不是正确的答案。
【问题讨论】:
-
顺便说一句,您应该希望意识到
from something import *通常是一个壮观的坏主意:-) -
我当然知道——我只是想翻译 perl 代码的语义。
-
没有问题,snoopyjc,只是确保引起大家的注意 :-)
-
您正在生成代码。为
from FILE import *生成的代码是from FILE import *。为什么会是别的? -
from不采用文件名 - 它需要一个模块名称作为FILE。
标签: python python-import