python 编译源文件
背景
近期项目到了部署的阶段。由于项目后台和算法都是用Python "撸的",但是又不希望将源代码直接 "release" 到 “客户”哪里。于是开始思考。。。
首先,按照惯性思维,能否将编译后的东东放出去呢?(类似java或.net 的部署方式)
再次,是不是能否将“关键部分”的代码保护起来呢?
解决方案
按照第一种思路,我们能将Python编译好的东西release出去呢?经过一些简单的理论查找和时间。发现了可行的解决办法。于是乎,就在今天的博客随笔中将其记录下来吧 :)
Python 生成编译后的二进制文件的方法,官方提供了两种方式: py_compile, compileall
1) 使用模块 py_compile 编译单文件
1.1 进入到Python交互环境中,键入一下命令
import py_compile
py_compile.compile('/home/ct/Dowork.py')
或者直接执行脚本
python -m py_compile /home/ct/Dowork.py
运行结果如下:
2) 使用模块 compileall 编译多个文件或目录, 方法和上面的一样,这里直接贴出结果:
可以看到,我们一共将4个Python“源文件”生成为编译后的“二进制”文件。 到这里我们编译工作已经完成!!
测试程序运行
程序的依赖关系为: Dowork.py 引用statics.py 中定义的方法, 经过测试,发现在删除statics.py 源文件但是保留 statics.pyc 的情况下,运行Dowork.py中的测试程序程序依然正常!!
因此,可以宣告: 这次将源码编译后,程序依然可以正常工作。 Well done!!
参考:
https://docs.python.org/2/library/py_compile.html
https://docs.python.org/2.7/library/compileall.html
python 编译源文件的更多相关文章
- Python编译源文件& 代码优化
编译源文件 代码优化 都能运行
- python编译pyc工程--导包问题解决
利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还 ...
- Python逆向(三)—— Python编译运行及反汇编
一.前言 前期我们已经对python的运行原理以及运行过程中产生的文件结构有了了解.本节,我们将结合具体的例子来实践python运行,编译,反编译的过程,并对前些章节中可能遗漏的具体细节进行补充. 二 ...
- 2.准备Python编译环境
2.准备Python编译环境 2.1下载Python2.7.6.tgz.ipython1.2.1.tgz.sqlite-autoconf-3071401.tar.gz 2.2安装Python2.7.6 ...
- 【转】ubuntu下安装eclipse以及配置python编译环境
原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.or ...
- gcc向待编译源文件传入参数的方法
gcc有两种方法向待编译源文件传入参数 第一种 利用–Dmacro=name 编译选项,详见gcc -D选项 第二种 利用链接脚本(*.lds)传入参数,类似于ADS的编译器参数可以被待编译源文件调用 ...
- 使用Code::Blocks配置Python编译环境
1.先在CodeBlock中新建C或C++工程. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所 ...
- 关于python编译的一点小结
大家都知道python是脚本语言,源码可以直接执行,有时需要提高执行效率或者保密(因为有时候不想让使用人看到源码文件),那就涉及到python编译了,那么该如何做呢? 有两种方法可以做到. 1.一种是 ...
- Xcode搭建Python编译环境
* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...
随机推荐
- Hyper Text Transfer Protocol(超文本传输协议)
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
- nginx flv点播服务器搭建
首先选用Nginx+Nginx-rtmp-module作为点播服务器,安装文章:https://www.atlantic.NET/community/howto/install-rtmp-ubuntu ...
- pyCharm安装破解
补丁破解 下载 http://idea.lanyus.com/jar/JetbrainsCrack-2.7-release-str.jar 并将 JetbrainsCrack-2.7-release- ...
- 手把手教你全家桶之React(二)
前言 上一篇已经讲了一些react的基本配置,本遍接着讲热更新以及react+redux的配置与使用. 热更新 我们在实际开发时,都有用到热更新,在修改代码后,不用每次都重启服务,而是自动更新.并而不 ...
- 用js实现算法:冒泡排序、插入排序和快速排序
一.冒泡排序 function bubbleSort(arr){ for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length-i-1;j ...
- MacOS多版本Python切换方案
1. 安装homebrew 官网 http://brew.sh/index_zh-cn.html 打开终端,在终端中粘贴如下脚本 /usr/bin/ruby -e "$(curl -fsSL ...
- lambda隐藏函数的嵌套
# 隐藏函数嵌套 f = (lambda a,b :a if a>b else b)(1000, 2000008) print((lambda a,g:a if a > g else g) ...
- SpringCloud实战-Hystrix请求熔断与服务降级
我们知道大量请求会阻塞在Tomcat服务器上,影响其它整个服务.在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败.高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险 ...
- Python_doc文件写入SQLite数据库
#docx文档题库包含很多段,每段一个题目,格式为:问题.(答案) #数据库datase.db中tiku表包含kechengmingcheng.zhanngji.timu.daan四个字段 impor ...
- 在mac OX10.11.6上安装MySQL
一.之前失败情况 官网下载dmg文件安装.源码安装,下过5.6 5.7 8.0 版本,都可以安装成功,但是在电脑设置界面无法启动,每次点启动输入密码后,均闪一下绿色然后变红色,既然不能界面启动,那 ...