如何在保持.py源代码可编辑的同时将python打包到exe?

怀亚特·吉列(Wyatt Gillette):

我正在创建一个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

在子文件夹中:

data\patch_script.py

print('This is the original file')

在根文件夹中,例如通过运行创建一个规范文件pyinstaller main_script.py在spec文件中,将补丁脚本添加为数据资源:

     ...
     datas=[('./data/patch_script.py', 'data' ) ],
     ...

运行pyinstaller main_sript.spec执行exe文件,它应该打印

This is the original file

编辑补丁脚本,例如:

print('This is the patched file')

重新运行exe文件,它应该打印

This is the patched file

注意:由于这是PoC,因此可以使用,但容易出现安全性问题,因为data目录中的python文件可用于注入任意代码(您无法对其进行任何控制)。您可能要考虑使用适当的软件包并更新PIP等使用的脚本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用py2exe将python + gevent程序打包到.exe文件中?

如何在保持范围的同时增加视野

如何在保持空白的同时拆分?

如何在Golang中保持代码干燥

如何在滚动时在 UITableViewCell 中保持 UITextView 可编辑并保持其动态大小?

如何在保持宽度的同时将标题移动到右侧?

如何在保持响应速度的同时将iframe居中

如何在保持引用原始Python的同时更改列表的顺序

关于元素对齐以及光标如何在此可编辑代码textarea中保持与文本齐平的问题?

如何在保持顺序的同时将List <P>中的元素分组到Map <K,List <V >>?

如何在保持与这些文件关联的提交的同时将文件从RepoA导入到RepoB?

如何将LaTeX源代码打包到DEB包中?

如何在保持行顺序的同时从Pandas DataFrame采样

如何在保持列配对的同时使用 pivot_longer() ?

如何在保持缩进的同时打印数组?

如何在保持缩进的同时打印数组?

如何在保持其大小的同时放大缩放图像?

CardView:如何在保持半径的同时添加渐变背景

如何在保持本地日期的同时执行date.toString?

如何在保持向后兼容聚合的同时扩展记录类型?

GSON:如何在保持循环引用的同时防止StackOverflowError?

如何在保持数据框结构的同时计算%

如何在保持主要排序的同时执行次要排序

如何在保持性能的同时布局嵌套的RecyclerViews?

SwiftUI如何在保持后退按钮的同时隐藏导航栏

如何在保持居中状态的同时防止div破裂

如何在保持响应的同时指定图像的宽度和高度?

在保持矩形的比例的同时,如何在钻石中装配矩形?

如何在保持图像高宽比的同时增加图像高度