VB 能否把 .py文件做成EXE ?

美股数据张老师 2021-02-24 09:02:10
由于我这有个包,无法用pyinstaller一起打包,所以现在只能把所有包连同python.exe等一起压缩。
只能用bat运行python.exe my.py。太尴尬。


所以考虑,用VB把my.py放到exe里面,避免代码泄漏,然后以同目录python.exe my.py这样的形式运行。
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2021-02-27
  • 打赏
  • 举报
回复
不推荐用资源的方式,因为一般的exe分析软件可以直接将资源文件释放出来,例如exescope,exehacker,vbexplore,以及winhex太多了。只能防止一般小白。

不过可以变通一下,可以考虑将py源代码用vb加密下,然后要用的时候再解密,用完了立马删除。加密后的文件可以放资源或者直接vb中放个文本框,然后把代码粘贴到文本框里,要用的时候写到一个py文件里即可。

=========================
网上看了下,其实对于这个问题有很多人都在寻找保护源代码的方案,其中一个比较方便可行的是将.py转成.pyc中间文件,然后通过Python执行pyc文件即可。py是文本的,而pyc是二进制的,从而达到保护源代码的目的。具体参考:https://baijiahao.baidu.com/s?id=1627375537998184265&wfr=spider&for=pc

总体各种方法优劣概括:
将.py转成.pyc二进制文件交给解释器 > 将.py用vb加密然用时解密 >将.py代码混淆加密让可读性变差,网上有工具的 > 直接放vb资源用时释放 > 放vb源代码中或者文本框控件中 > 不用Python改用vb实现
  • 打赏
  • 举报
回复
引用 5 楼 余思培 的回复:
我不知道*.py文件是不是明文,若是且你不嫌麻烦的话你可以将其逐句作为字符串变量输入,然后使用时以文件形式释放,结束后删除
你的意思是 运行 my.exe --- 释放 my.py 然后隐藏下运行 python my.py 这样可以吗? 如果把my.py打包进VB的EXE 然后释放?
余思培 2021-02-25
  • 打赏
  • 举报
回复
我不知道*.py文件是不是明文,若是且你不嫌麻烦的话你可以将其逐句作为字符串变量输入,然后使用时以文件形式释放,结束后删除
脆皮大雪糕 2021-02-24
  • 打赏
  • 举报
回复
最后还是要用 python.exe my.py 执行? 那就是说my.py还是要落地到硬盘上?那还操心什么避免代码泄露?这就已经泄露了。
  • 打赏
  • 举报
回复
可以这样吗?VB的EXE释放PY文件,再执行 PYTHON.EXE MY.PY
不懂别说哎 2021-02-24
  • 打赏
  • 举报
回复
文件类的资源文件不释放好像不能用
  • 打赏
  • 举报
回复
是啊,所以得用VB想办法,EXE可以添加资源文件,有没有办法把.PY隐藏到EXE里面,再隐蔽调用同目录的python my.py
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的同学来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且界面简陋,用起来也不爽。 至于PyQt/wxPython等GUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀,学习起来也比较复杂,而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的Python的GUI界面,支持python 2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片橙红色羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可(建议使用12M的版本,6M的版本也可以使用,不过工具栏图标无法显示,可以通过菜单执行此插件)。 经过网友测试,完美支持WinXP,Windows 7, Windows 8。
主要功能描述: 提供端口资源的转发和传递。 区别于传统于本地端口转发的优点: 1.转发服务所在机只需要提供一个端口资源。 2.端口转发和获取与中转服务无关,中转服务不需要对转发的端口资源进行任何配置处理。 3.端口资源转发提供级连扩展,可以将端口资源传递给任意多级的中转站。 4.资源提供、中转、资源获取,三个模块分离设计,任意组合,可一对多,多对多连接,极大扩展连接的范围。 应用实例 假设有5台机子分别处于不同的网段,且它们的连接关系只能如图所示:A-B-C-D-E A只能连接B,不能连接CDE,C只能连接BD,不能连接AE 现有的端口转发工具要在BCD上分别设置,各开两个端口用于一个连接的转发,如果转发连接多了,不但设置非常麻烦,而且占用大量的端口资源(连接数量*中转次数*2)。 使用Pyvidc,在BCD上运行vidcserver,只要一个监听端口,设置服务级连,B级连C,C级连D 这样,在A上可以任意发出多个连接给B,在BCDE上都可以自由获取A的端口资源。比如socks服务或者远程桌面。 另外ABCDE可以理解为5个处于不同网络的用户。 各功能模块说明: mailip:mailip.py,mailipr.ini 通过email转发定位ip地址,类似花生壳只是双方都要运行这个程序,并且使用相同的邮箱账户做中转。 mps:mps3.py,mps25.py,mps.ini 端口转发工具,mps25.py是核心模块,mps3是个调用的外壳。每5秒输出连接信息,包括负载均衡的情况和连接数量。 -----------------以上为两个独立模块,下面的三个是pyvidc的组件------------------------------- vidcclients.py,pyvidcc.ini 端口资源发布模块。(A机运行,提供本机或本地其他网络端口资源) vidcservers.py,pyvidcs.ini 连接中转和再中转服务模块。(BCD机运行,中转连接资源) vidcusers.py,pyvidcu.ini 获取被中转连接的模块。(E或BCD上运行获取连接资源) pyvidc运行机制如下: A机运行vidcclients,把自己能够访问的连接资源,比如自己的远程桌面,或者本地局域网的其他远程桌面,加上一个标识发送给vidcserver(B机)。 BCD机运行vidcservers,B机接受连接资源后会根据设置判断是否将连接传递给C,C再判断是否传递给D。 E机或者BCD机运行vidcusers从自己能够连接的任意vidcserver通过标识判断,获取需要的连接资源。 这样运行vidcuser的用户(E或BCD)就可以远程桌面或者同时socks到A机以及A能访问的所有资源。 同时,一个server可以连接任意多的client和user,client和user也可以同时连接不同的server。(资源受内存数量限制,目前大约一个成功连接的资源占用64kb) *重要提示: 不要用windows自带的notepad来编辑ini文件,它会在ini的[main]前面添加一堆乱码,造成ini读取错误。 可以简单的用edit命令就可以查看和修改错误的ini文件。 其他说明: 1.由于是初次尝试,对连接的安全性、验证机制方面并没有深入考虑。 2.所有ini配置文件都有简要的说明和配置范例。 3.python无控制台运行的方法,理论上更名成.pyw后是自动用pythonw来运行的,可是会莫名其妙地退出。 所以还是延用vb的后台运行方法来调用py文件,附带两个vb脚本范例。hidemps.vbs,hidevidcc.vbs 4.目前代码使用了大量的try陷阱做保护,在一定程度上影响性能。日后逐步取代try的使用。 chentca@21cn.com 2009-06-10 初步成型端口转发机制 2009-06-12 把mailip和pyvidc三个功能模块化,可以单独执行和被其他模块调用,使用方法见pyvidcgroup.py 所有代码添加了简单注释。 2009-07-16 设计了连接的自动扩展级连,标识使用"vidcsEx:n:flag:" 例子:33=127.0.0.1 5899 127.0.0.1 80 vidcsEx:1:扩展连接: vidcsEx:表示允许服务端把连接传递给下一级的服务端。 n:控制允许被服务端端级连的次数 flag:是连接的名称。允许使用中文,更加安全和不容易重名。 2009-07-17 调整修复了扩展连接bug,增加了服务器是否使用连接扩展的开关 用py2exepy2.5下打包成独立运行包,mailip打包失败,mps打包成功,pyvidc打包成功(包含client+server+user) 包里的文件是用py2exe打包成独立运行的,不需要安装python环境。 包含了mps和pyvidc,但是不含mailip的定位功能,因为打包后不能用。 包内配置的简单说明: mps运行后:把对本地的8881端口的访问,均衡分散给本地的9050,9060,9070端口使用。这个是我在本地开了三个tor用来bt的。 pyvidc运行后:把本地的5个端口资源送到本地vidc服务器上,pyvidc服务器又根据特定标志把这些连接发送给下级的三vidc服务器(chentcahome,81 chentcahome,80 192.168.10.100,80),让它们三个都能同时获取本地的5个端口资源。而vidcuser仅向服务器提交了三个资源标识的获取请求。不过它只能得到1个,因为另外标志在服务器上是没有的。 标志支持使用中文。
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的偶来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且用起来很不爽。。 至于PyQt/wxPython等GUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀, 而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过我经过多次实验后发现导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的Python的GUI界面,支持2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 当然除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可,不到20M,小巧玲珑。 代码已经在Github上托管,更新的版本可以在这上面找到,需求也可以在上面提: https://github.com/cdhigh/Visual-Tkinter-for-Python

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧