【发布时间】:2021-11-04 00:09:47
【问题描述】:
我现在正在制作一个包,我希望人们可以直接调用这个包,所以我使用 setup.py 中的入口点。
现在我有 application.py,其中包含 main() 作为入口点。 这个 main() 函数中的变量被发送到 tex.py,它可以帮助我生成乳胶报告。 (latex文件的生成方式来源于:Generating pdf-latex with python script)
# application.py
def main():
a = 123
b = 456
from tex import generate
generate()
#tex.py
content = f'{a} is not equal to {b}'
def generate():
with open('report.tex','w') as f:
f.write(content)
但这会导致 alb 未定义。
我发现一种解决方案是使用global 并添加from application import *
但是因为我有几十个变量,所以太长了。
我想知道是否有办法将变量共享给我的乳胶生成器并保留这个入口点功能。
提前致谢。
【问题讨论】:
-
您可以创建一个全局命名空间(可能是
dataclass)并将所有变量放在其中。您也可以使用下划线开始类名以将其标记为私有,然后创建此数据类的单例变量,该变量可以在模块之间共享。这种方法不需要使用global。 -
最好的方法是明确地向
generate提供参数 -
@rv.kvetch 为什么不只是一个常规模块?
-
嗯,不确定我是否在关注你
-
哦,好吧,如果我理解正确的话,OP提到他有很多变量,所以他想避免长时间的导入
标签: python python-3.x command-line-interface pypi entry-point