Wya*_*tte 5 python executable pyinstaller
我正在创建一个应该修改自身并且是可移植的 python 脚本。
我可以单独实现这些目标中的每一个,但不能一起实现。
我使用 cx_freeze 或 pyinstaller 将我的 .py 打包为 exe,因此它是可移植的;但后来我有很多 .pyc 编译文件,我无法从软件本身编辑我的 .py 文件。
有没有办法让脚本保持便携和轻量级(所以 70mb 的便携 python 环境不是一种选择)但仍然可以编辑?
这个想法是有一种像 python.exe 这样的 exe“解释器”,但是所有的库都链接起来,因为 pyinstaller 允许,运行 .py 文件,所以 .py 脚本可以编辑自己或被其他脚本编辑,并且仍然与解释器一起执行。
首先定义您的主脚本(无法更改)main_script.py。在子文件夹(例如名为data)中创建patch_script.py
main_script.py:
import sys
sys.path.append('./data')
import patch_script
Run Code Online (Sandbox Code Playgroud)
子文件夹内:
data\patch_script.py:
print('This is the original file')
在根文件夹中创建一个规范文件,例如通过运行pyinstaller main_script.py. 在spec文件中,添加补丁脚本作为数据资源:
...
datas=[('./data/patch_script.py', 'data' ) ],
...
Run Code Online (Sandbox Code Playgroud)
跑步pyinstaller main_sript.spec。执行exe文件,它应该打印
This is the original file
编辑补丁脚本,例如:
print('This is the patched file')
重新运行 exe 文件,它应该打印
This is the patched file
注意:由于这是一个 PoC,它可以工作,但容易出现安全问题,因为数据目录内的 python 文件可用于注入任意代码(您无法控制)。您可能需要考虑使用 PIP 等使用的正确包和更新脚本。
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |