python - 如果包含其他 Python 脚本的子进程,我如何制作一个独立的 Python exe?
问题描述
我有一个 Python 脚本,它基本上是运行其他脚本的中心枢纽。它可以运行的一些脚本使用 popen 作为子进程运行。没有导入其他脚本,因为我只是使用 popen 运行它们。现在的问题是我想把整个东西变成一个独立的可执行文件,我可以让任何人运行。有没有办法做到这一点?我使用 pyinstaller 将基本脚本转换为可执行文件,但由于未导入其他两个脚本,因此在创建可执行文件时不包含它们。
我已经尝试让每个人都可以执行,但他们最终都被排除在外,一些同事告诉我这不是一个好主意,但他们不知道另一种解决方案。
解决方案
我发现答案是将额外的脚本添加为数据文件。从那里您只需要更新 Popen 中的路径即可找到文件。要使用额外的脚本创建可执行文件,请使用:
pyinstaller -F --add-data <nameOfDependent> TheScript.py
where"--add-data <nameOfDependent>"
用于添加未导入主脚本的依赖 python 脚本,最后一个是主脚本。
此外,nameOfDependent 必须具有脚本的名称和 ;。在最后。所以如果你的脚本是TestMe.py,那么将被替换为“TestMe.py;”。用“”包围它。
要处理脚本的路径,请按照 Masoud Rahimi 的答案给出的代码:Best way to call subprocess scripts in a Python exe
特别是指资源路径的部分。
请注意,由于子进程中脚本的调用方式,您仍然需要 Python 和运行可执行文件的机器上所需的已安装库。
推荐阅读
- r - 如何在我的数据框中获取 R 向量属性作为变量?
- python - 谁能帮我解决径向分布函数的问题?
- javascript - 如何用 javascript jquery 剪切一段字符串?
- mysql - 触发自动插入同一行
- amazon-web-services - 将请求从 CloudFront 转发到 API Gateway 时出现 403 Forbidden 错误
- monitoring - 在 ubuntu 20.04 上配置 SNMP
- git - 更改所有 git subrepos 和提交的 GIT 子模块 URL
- ruby-on-rails - Ruby on Rails 测试
- botframework - 通过与 LUIS 和 QNA 绑定的 Microsoft Chatbot Composer (1.4.1) 接收 403(禁止)
- android - 如何在 Android 应用程序中使用 Jsoup 直接从网站显示搜索栏?