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

原文地址:https://www.cnblogs.com/atuotuo/p/9096891.html

时间: 2024-10-28 14:41:28

python 编译源文件的相关文章

compileall 编译源文件为pyc文件

有的时候我们需要把项目中.py的python所有源文件编译成.pyc文件,只保留.pyc文件然后发布给别人(虽然说可以反编译,但也算是一种保护把). 这个时候就可以使用compileall 库来完成这个工作,它可以递归的把一个文件夹下的所有.py文件编译成.pyc文件. 例如我有一个django项目在test文件夹下就可以 E:\>python -c "import compileall; import re; compileall.compile_dir('test', rx=re.co

Xcode搭建Python编译环境

* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !importan

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

1.先在CodeBlock中新建C或C++工程,因为在Project下才可调试代码. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所在路径(不可使用中文路径!) 2.工程目录下 main.c 改成 *.py 文件,本文改成test.py. 3.单击菜单栏Tools——Configure tools——Add按钮,出现Edit Tool页面,在此配置Python编译选项. 4.单击Setting

Java与C#对比之编译源文件

我们知道Java跟C#一样,都是基于虚拟机的环境而得以运行的.Java中的虚拟机叫做JVM(Java Virtual Machine),而C#中叫做CLR(Common Language Runtime).借助于虚拟机,这两门编程语言就可以实现所谓跨平台的功能. 下面我们做个简单的试验,来回顾一下Java跟C#是如何编译源文件的. 一.Java编译源文件 编译的前提是要安装好JDK(Java Development Kit),如果安装的是JRE(Java Runtime Environment)

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

原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.org/downloads/index-developer.php?osType=linux&release=undefined下载linux版本的eclipse 2.使用sudo tar xvfz eclipse-jee-galileo-SR2-linux-gtk.tar.gz  -C /opt,解压

Python编译

Python是如何编译的呢? python -m py_compile test.py 会生成test.pyc 文件,这个pyc文件类似java的class文件,也是跨平台的字节码文件,只不过是由python虚拟机来执行,.pyc 文件有几个好处,一是可以简单的隐藏源码,二是提高载入速度,三是跨平台.python -o -m py_compile test.py 会生成test.pyo 文件,.pyo文件是优化生成的pyc文件

python编译安装

在LINUX Centos 7.1安装Python 3.5.2 操作步聚如下: 1) 设置语言环境 export LANG=en_GB.utf8 2)安装DEVTOOLSET yum groupinstall "Development tools" 3) 安装依赖包 yum install zlib-develyum install bzip2-develyum install openssl-develyum install ncursesyum install sqlite-dev

boost.python编译及示例

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46781581 linux编译boost的链接:http://blog.csdn.net/majianfei1023/article/details/46761029 昨天编译安装好boost,今天准备使用boost.python写个python调用c++代码的例子,结果踩了很多坑. 首先贴上代码: 1.student.cpp,一个普通的c++类 #include

Python编译错误集锦

1 IndentationError: expected an indented block Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的. 在编译时会出现这样的错IndentationError:expected an indented block说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行. 一句