Nuitka 编译的 exe 如何配合子目录中的嵌入式 Python 环境使用

2022-04-26 20:10:01 +08:00
 lon91ong

我现在使用的编译参数如下:

nuitka --mingw64 --nofollow-imports --full-compat --plugin-enable=upx --windows-disable-console --windows-icon-from-ico=some.ico --output-dir=out main.py

编译得到的main.exe可以和嵌入式的 python 环境在下图所示路径中使用:

而我希望的目录结构如下:

用 DeepL 辅助一句一句翻译, 在 Github 上 Nuitka 项目发了issue

希望这里有大神能有解决办法

2416 次点击
所在节点    Python
7 条回复
timpaik
2022-04-26 20:21:27 +08:00
Nuitka 编译出来的东西放子目录,再写一个启动器,启动器调用子目录里的 main.exe
ysc3839
2022-04-26 20:22:18 +08:00
要改代码及编译参数,把 pythonXY.dll 设置成延迟引入,然后程序启动时调用 SetDllDirectory 设置 python 文件夹。还可能要设置一些环境变量,让 Python 能找到正确的位置。
lon91ong
2022-04-27 08:53:34 +08:00
@ysc3839 求详解, 水平有点菜
ysc3839
2022-04-27 09:39:51 +08:00
@lon91ong 如果你不会 C/C++开发的话还是放弃吧,要改的是 Nuitka 主程序的代码和编译参数
ysc3839
2022-04-27 09:48:21 +08:00
去搜索了一下,发现 DelayLoad 不可行,因为引入了 data symbol
https://stackoverflow.com/questions/44729188/delay-load-python-dll-when-embedding-pythonnumpy
这种情况可能没什么好办法,不想要 pythonXY.dll 在那的话考虑静态链接吧。
Kinnice
2022-04-27 13:40:13 +08:00
加个 –recurse-all –standalone 打包成单一文件,就不需要依赖了
lon91ong
2022-04-27 18:06:30 +08:00
@Kinnice 这种方式运行时解压到系统临时文件夹,感觉上有点“low”(心理洁癖吧可能是), 不如本地运行的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849430

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX