pyc 不是可执行文件
可以试试 pyinstaller 这个打包工具,用 pip 安装,安装之后就可以直接运行下面的命令
pyinstaller -w --onefile xxpy
使用python源文件的几种方法\运行python脚本:
a windows下打开shell(DOS提示符,命令行,cmd):
CMD命令进入某个目录
如在window 下cmd运行python源文件 xxxpy(注意这个xxxpy在C盘的python27目录下,若是其它盘的目录,就进入其它盘的目录来运行xxxpy):
打开cmd
输入c: 回车
输入cd c:/python27/ 回车 (ps:cd后面没有冒号!,如果需要在dos下查看带有空格的文件夹,要给文件夹加上引号如:CD "Program Files"/PHP )
输入python xxxpy 或者 xxxpy 回车
这是在找到文件路径下去执行某文件,直接在cmd,python环境下输入python xxxpy 会运行语法错误,不知是否是系统的环境变量没有添加好?
在linux下参见vamei :python 基础
另附:cmd命令
1进入上一层目录 CD /
2显示目录下的文件及了目录 dir
bLinux下运行python源文件:
$ python xxxpy
c在IDLE下运行python源文件
点击开始->程序->Python 27->IDLE(Python GUI)
点击file->open->xxxpy
ctrl+F5
quit()是退出程序
d在IDLE里,可以通过os执行系统命令,执行python源文件:
import os
ossystem('python c:/xxxpy')
e 直接双击xxxpy
双击xxxpy,窗口一闪而过。很像VC运行时的Ctrl+F5对不对?那怎么办呢?(非windows系统可以跳过,不用此技巧)
这里我们在代码里加入一句话raw_input(),就可以。
pyc文件就是 py程序编译后得到的字节码文件 (py->pyc),python为了提高运行效率也会进行编译,有时候编译出pyc文件后,删除py文件也不会出错助于pyc文件的产生,给楼主举例加入你有一个逻辑文件abcdpy,里面有很多函数A,B,C,D,这个时候,如果你有一个test脚本去导入了abcdpy,只要你运行test脚本,在adcdpy目录下就会生成一个abcdpyc文件,而不管你是否需要调用A,B,C,D函数
单个py文件转为pyc文件
在命令行中输入如下命令:
python -m py_compile hellopy
利用python编译工程, 生成pyc文件。pyc文件是一种二进制机器码,而且隐藏了源码且使得程序能 正常执行。
compileallcompile_dir(path, force=True)为path目录下的py文件产生pyc文件,force=True更新所有的pyc文件。使用compileall得到pyc文件后。
参考链接:
>
一、什么是pyc文件?
pyc文件就是py程序编译后得到的文件,是一种二进制文件。一般是这样的:
pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的class文件。如果py文件改变,也会重新生成pyc文件。
:《Python视频教程》
二、pyc文件怎么生成的?
1、被当做模块调用的时候会自动生成pyc文件。
一般是python脚本被当做模块被其他脚本文件调用时,就会产生pyc文件,举个例子:
如果你写了一个脚本文件imagepy是用来生成验证码的,如果你在indexpy文件中想引用这个脚本的功能,就需要通过import导入imagepy文件,然后,如果你运行indexpy文件,那就会在imagepy文件所在的路径生成一个imagepyc文件。
2、对于py文件,可以执行下面命令来生成pyc文件。
3、通过代码来生成pyc文件。
三、为什么要生成pyc文件?
1、python为了提高运行效率也会进行编译。
python是解释型语言,运行的时候需要通过python解释器编译,所以先编译出pyc文件后,可以节省编译这一步的耗时时间。
2、不想让源码泄露。
因为py文件是可以直接看到源码的,对于一般的商业公司来说,这有点不妙,因为pyc文件可以独立于py文件,删除py文件也不会出错。这就是太好了,只需要编译成pyc文件再发布出去就好了。
像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。
本次演示环境:linux
确保要发布的包根目录("demo")中有__main__py文件,这个是程序执行入口。
编译
批量改名pyc文件
移动pyc文件
清理py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
21 混淆工具pyminifier
在原来的工具 pyminifier上修复了几个bug。
安装:
python3 安装
或者clone下来,自行安装
使用例子
22 源码变更
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
结合混淆、编译和打包,尝试出以下发布脚本。
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。
可以打开py模式,Python控制台程序的源代码文件。
python作为一种动态语言,其实是一个解释器软件包。当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤。第一步是编译成所谓的“字节码”,如果Python进程拥有写入权限,将把程序的字节码保存为一个以pyc为扩展名的文件,如果Python无法在机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时简单地丢弃。
以上就是关于linux下 python 编译pyc 运行错误全部的内容,包括:linux下 python 编译pyc 运行错误、python文件的源代码文件夹怎么打开、如何编译Python程序生成.pyc文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)