大家都知道python是脚本语言,源码可以直接执行,有时需要提高执行效率或者保密(因为有时候不想让使用人看到源码文件),那就涉及到python编译了,那么该如何做呢? 有两种方法可以做到。 1、一种是直接使用命令编译成pyc或者pyo文件。 新建test.py文件,代码如下:

#!/usr/bin/python
print "hello world!"

编译成pyc文件使用命令:

python -m py_compile test.py

-m py_compile是加载py_compile编译模块的意思,可以看到当前目录下生成了test.pyc文件 编译成pyo文件使用命令:

python -O -m py_compile test.py

可以看到当前目录下生成了test.pyo文件。 这时使用vim打开文件时可以看到里面是乱码,可以达到部分源码隐藏的目的,说是“部分”是因为仍然可以看到部分源码,使用反编译软件也可以看到源码。但总可以吓唬一下小白了。 2、另一种是使用pyinstaller工具编译成可执行程序 使用pip install pyinstaller命令安装pyinstaller工具。此工具可以把python文件打包成二进制的包。 方法:

pyinstaller -F test.py

-F命令是为了打成一个包,把一些库文件也放到一起。不用的话可执行文件和库文件分开,不利于使用。 可以看到当前目录下生成了dist和build两个文件夹。dist下有test二进制文件。此方法可以达到完全加密的目的。 总结:第一种方法比较简单易用,但是只能部分加密。第二种方法安全可靠,完全加密。但是两种方法都存在一个问题,就是兼容性太差,使用python2.6编译的程序放到2.7版本上就不能执行了。可执行文件也是这样,在iSoft Server 4.0上编译的可执行文件到iSoft Server 3.2上也不能执行了。所以打算在不同平台使用的python脚本这种方法不太好用,python兼容性差是个通病,还是c/c++好呀。 我最近就是打算加密一个python文件,最后因为兼容性的问题只好作罢了。不知道大家有没有更好的方法呢?要求加密python源码,而且保证可以正常执行。

关于python编译的一点小结的更多相关文章

  1. python --- 字符编码学习小结(二)

    距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. 2.准备Python编译环境

    2.准备Python编译环境 2.1下载Python2.7.6.tgz.ipython1.2.1.tgz.sqlite-autoconf-3071401.tar.gz 2.2安装Python2.7.6 ...

  4. 【转】ubuntu下安装eclipse以及配置python编译环境

    原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.or ...

  5. 使用Code::Blocks配置Python编译环境

    1.先在CodeBlock中新建C或C++工程. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所 ...

  6. python 编译源文件

    背景 近期项目到了部署的阶段.由于项目后台和算法都是用Python "撸的",但是又不希望将源代码直接 "release" 到 “客户”哪里.于是开始思考... ...

  7. python编译pyc工程--导包问题解决

    利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还 ...

  8. Xcode搭建Python编译环境

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  9. mac 上python编译报错No module named MySQLdb

    mac 上python编译报错No module named MySQLdb You installed python You did brew install mysql You did expor ...

随机推荐

  1. 【模板】二分图最大权完美匹配KM算法

    hdu2255模板题 KM是什么意思,详见百度百科. 总之知道它可以求二分图最大权完美匹配就可以了,时间复杂度为O(n^3). 给张图. 二分图有了边权,求最大匹配下的最大权值. 所以该怎么做呢?对啊 ...

  2. http协议的八种请求类型

    GET:向特定的资源发出请求. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件).数据被包含在请求体中.POST请求可能会导致新的资源的创建和/或已有资源的修改. OPTIONS: ...

  3. MySQL最常用分组聚合函数

    一.聚合函数(aggregation function)---也就是组函数 在一个行的集合(一组行)上进行操作,对每个组给一个结果. 常用的组函数: AVG([distinct] expr) 求平均值 ...

  4. 苹果笔记本只能上QQ,微信,任何浏览器不能打开网页的问题。

    我的笔记本一共遇到过两次这种情况.第一次是浏览器输入域名打不开网页,而输入ip地址可以打开.这就是DNS服务器的问题,解决方法很简单.在系统偏好设置里面找到网络,然后,点击正在连接的网络的高级选项,选 ...

  5. Printk与sched_clock_init的一点分析

    在分析Linu内核启动的过程中,发现一段"不平常"的日志,感觉产生这段日志的代码肯定是"不可思议"的.因此就大致分析了一下: 日志如下: [ 0.000000] ...

  6. oracle 创建用户并赋权 清空用户表

    create user BUSM identified by BUSM; grant connect,resource,dba to BUSM; grant select any table to B ...

  7. Java基础语法(一)<注释,关键字,常量,变量,数据类型,标识符,数据类型转换>

    从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...

  8. express4.x的使用

    ①.安装 npm install -g  express   ②.创建应用 express [目录] 会在目录下生成 node_modules, 存放所有的项目依赖库.(每个项目管理自己的依赖,与Ma ...

  9. poj3160强连通分量加dfs

    After retirement as contestant from WHU ACM Team, flymouse volunteered to do the odds and ends such ...

  10. hadoop单机环境搭建

    [在此处输入文章标题] Hadoop单机搭建 1. 工具准备 1) Hadoop Linux安装包 2) VMware虚拟机 3) Java Linux安装包 4) Window 电脑一台 2. 开始 ...