linux下 python 编译pyc 运行错误

linux下 python 编译pyc 运行错误,第1张

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文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10116546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存