Python预处理导入

2024-06-28 20:08:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在管理一个相当大的python代码库(超过2000行),我希望这些代码可以作为单个可运行的python脚本使用。所以我正在寻找一种方法或工具来合并一个开发文件夹,这个文件夹由不同的python文件组成,形成一个运行的脚本。在

我要搜索的东西/方法应该将代码拆分成不同的文件,可能是使用包含导入的__init___.py开始文件,并将其合并到一个单独的大脚本中。在

很像预处理器。最好是一个接近本机的方式,如果我可以从dev文件夹运行的话。在

我已经检查了pypp和pypreprocessor,但他们似乎没有抓住重点。在

像是__import__()的奇怪用法,或者是一堆{}被预处理器替换成代码?显然,我只想合并我的目录,而不是公共库。在

更新 我想要的是将代码完全保存为一个包,然后能够将其“编译”成单个脚本,便于复制、粘贴、分发和重用。在


Tags: 文件工具方法代码pydevimport脚本
2条回答

waffles似乎正是你想要的,尽管我没有尝试过

您可以手动执行此操作,例如:

# file1.py
from .file2 import func1, func2
def something():
    func1() + func2()

# file2.py
def func1(): pass
def func2(): pass

# __init__.py
from .file1 import something
if __name__ == "__main__":
    something()

然后可以将所有文件连接在一起,删除以from .开头的任何行,然后。。可能会有用。在

也就是说,一个可执行的egg或常规PyPI发行版将更加简单和可靠!在

听起来你在问如何将你的代码库合并到一个2000多个源文件中你真的真的确定要这么做吗?这会使你的代码更难维护。Python文件与模块相对应,因此除非主脚本对其所有部分执行from modname import *,否则将通过将其转换为一个文件而丢失模块结构。在

我建议让源代码保持原有的结构,并解决如何分发程序的问题:

  1. 您可以使用PyInstaller、py2exe或类似的方法生成一个甚至不需要安装python的可执行文件。(如果您可以相信python会出现,请参阅下面@Sebastian的评论。)

  2. 如果您想将代码库分发给其他python程序使用,那么首先应该将其结构化为一个包,这样就可以用一个import来加载它。

  3. 为了方便地分发大量python源文件,您可以将所有内容打包到zip归档文件或“egg”(实际上是一个包含特殊管理信息的zip归档文件)。Python可以直接从zip或egg存档导入模块。

相关问题 更多 >