从 select 位置导入 Python 模块
Importing Python modules from a select location
假设我有三个脚本。 Main.py(包含所有导入),1.py(随机脚本),2.py(随机脚本)。
pyinstaller -F --onedir Main.py (80mb)
pyinstaller -F --onedir 1.py (80mb)
pyinstaller -F --onedir 2.py (80mb)
这会创建 3 个文件夹,然后我将 1.exe 和 2.exe 与所有依赖项一起复制到主文件夹,这 运行 没问题。
存在两个问题:
问题是大小。一个文件减少到 30mb,一个文件夹保持在 80mb
更重要的是,exe 无法离开该文件夹。我不得不求助于 Python.
中的快捷方式
我正在关注 this,这应该是一种解决方法。
我的问题是,如何使用 pyinstaller 从 select 位置读取导入以便移动可执行文件?
逻辑:
使用 pyinstaller -F –onefile Main.py (15mb).
编译 Main.py
在 C:\
创建文件夹,使 exe 看起来像 C:\Main.exe
link 所有 exe 都在 C:
? --runtime-tmpdir PATH
我正在努力寻找有关从 exe 甚至 "one dir"
文件夹中获取导入的文档。从一开始就有很多关于获取导入的内容,但是关于从 select 位置获取导入的内容并不多,所以我可以 运行 exe 在任何地方。更重要的是,如果不反编译它,甚至很难在 pyinstaller 中找到模块,这加剧了这种混乱。
也许……
pyinstaller -F --runtime-tmpdir C: --onefile 2.py
pyinstaller -F --runtime-tmpdir C: --onedir 3.py
虽然我没有创建目录。如何从 select 位置获取进口商品。
另一种可能solution:
if getattr(sys, 'frozen', False):
os.path.join(sys._MEIPASS, "C:\aa")
尽管如您在 image 中看到的那样,假设我们想要 pandas 有几个文件可供选择...
我在 PyInstaller 切换到 3.0 版时遇到了同样的问题,Nuitka 帮我解决了。
您可以将 Main.py
捆绑到 .pyd
lib 文件中,然后为 1.py
和 2.py
创建可执行文件,这将从 [=20] 中导入所有需要的包=].因此,您可以将 lib 文件放入特定位置,并在启动可执行文件之前相应地设置 PYTHONPATH
(例如,在批处理文件中或直接在您的 shell 配置中)。
我对此进行了进一步调查,并相信 提供的解决方案是我想要的答案
无法使用 onefile,因为此功能目前已损坏。
为了解决我的第一个问题,UPX 和虚拟目录。最后,将所有文件放入一个目录中。最后,像我在图片中所做的那样将 exe 放在文件夹中将意味着我有一个缩小的文件。
我可以通过 python 脚本创建快捷方式(如果这仍然是一个问题),但是没有真正的需要并且 运行 将所有 exe 都放在那个文件夹中就可以了我发现了。他们将来可能会修复 onefile,但我对这个解决方案非常满意。
结果:
较小的文件。
我可以 运行 这些 exe 可以放在那台电脑上吗?可悲的是,不是没有 multipackage-bundles 坏了。您可以创建一个快捷方式,但它并没有我想象的那么糟糕。虽然他们可能会在未来解决这个问题,但与此同时,这个解决方案会尽可能好。如果我错了,请随时纠正我,但我对这个解决方案很满意。
假设我有三个脚本。 Main.py(包含所有导入),1.py(随机脚本),2.py(随机脚本)。
pyinstaller -F --onedir Main.py (80mb)
pyinstaller -F --onedir 1.py (80mb)
pyinstaller -F --onedir 2.py (80mb)
这会创建 3 个文件夹,然后我将 1.exe 和 2.exe 与所有依赖项一起复制到主文件夹,这 运行 没问题。
存在两个问题:
问题是大小。一个文件减少到 30mb,一个文件夹保持在 80mb
更重要的是,exe 无法离开该文件夹。我不得不求助于 Python.
中的快捷方式我正在关注 this,这应该是一种解决方法。
我的问题是,如何使用 pyinstaller 从 select 位置读取导入以便移动可执行文件?
逻辑:
使用 pyinstaller -F –onefile Main.py (15mb).
在 C:\
创建文件夹,使 exe 看起来像 C:\Main.exe
link 所有 exe 都在 C:
? --runtime-tmpdir PATH
我正在努力寻找有关从 exe 甚至 "one dir"
文件夹中获取导入的文档。从一开始就有很多关于获取导入的内容,但是关于从 select 位置获取导入的内容并不多,所以我可以 运行 exe 在任何地方。更重要的是,如果不反编译它,甚至很难在 pyinstaller 中找到模块,这加剧了这种混乱。
也许……
pyinstaller -F --runtime-tmpdir C: --onefile 2.py
pyinstaller -F --runtime-tmpdir C: --onedir 3.py
虽然我没有创建目录。如何从 select 位置获取进口商品。
另一种可能solution:
if getattr(sys, 'frozen', False):
os.path.join(sys._MEIPASS, "C:\aa")
尽管如您在 image 中看到的那样,假设我们想要 pandas 有几个文件可供选择...
我在 PyInstaller 切换到 3.0 版时遇到了同样的问题,Nuitka 帮我解决了。
您可以将 Main.py
捆绑到 .pyd
lib 文件中,然后为 1.py
和 2.py
创建可执行文件,这将从 [=20] 中导入所有需要的包=].因此,您可以将 lib 文件放入特定位置,并在启动可执行文件之前相应地设置 PYTHONPATH
(例如,在批处理文件中或直接在您的 shell 配置中)。
我对此进行了进一步调查,并相信
无法使用 onefile,因为此功能目前已损坏。
为了解决我的第一个问题,UPX 和虚拟目录。最后,将所有文件放入一个目录中。最后,像我在图片中所做的那样将 exe 放在文件夹中将意味着我有一个缩小的文件。
我可以通过 python 脚本创建快捷方式(如果这仍然是一个问题),但是没有真正的需要并且 运行 将所有 exe 都放在那个文件夹中就可以了我发现了。他们将来可能会修复 onefile,但我对这个解决方案非常满意。
结果: 较小的文件。
我可以 运行 这些 exe 可以放在那台电脑上吗?可悲的是,不是没有 multipackage-bundles 坏了。您可以创建一个快捷方式,但它并没有我想象的那么糟糕。虽然他们可能会在未来解决这个问题,但与此同时,这个解决方案会尽可能好。如果我错了,请随时纠正我,但我对这个解决方案很满意。