缘起
golang将程序编译成一个可执行文件,部署起来特别方便。
那么Python是否也有类似解决方案呢?单一可执行文件,免去安装Python环境的麻烦,也避免了直接暴露源码程序。
经过多次搜索之后找到解决方案 exxo
注意:exxo只支持linux64平台
指路
安装
首先下载安装exxo1
2
3
4
5wget https://bintray.com/artifact/download/mbachry/exxo/exxo-0.0.7.tar.xz # 下载
tar xf exxo-0.0.7.tar.xz # 解压
mv exxo /usr/local/bin # 移动到可执行文件目录(可选)
创建环境
通过 exxo 创建一个python虚拟环境,用于编译我们的程序
1 | exxo venv /tmp/myenv # 创建环境 |
编译程序
先写一个简单的程序: aa.py1
2
3
4
5
6
7import os
def main():
os.system('ls -al')
if __name__ == '__main__':
main()
再根据这个程序编写setup.py, 这一步是关键,不熟悉的同学可以去学习一下setuptools的语法。
1 | #condig=utf8 |
执行exxo build
编译,生成文件dist/pyaa
最后,测试该文件,功能正常。1
2
3
4
5
6
7
8
9$ ./dist/pyaa
总用量 19348
drwxrwxr-x 4 ruan ruan 4096 3月 1 11:25 .
drwxrwxr-x 6 ruan ruan 4096 2月 29 11:48 ..
-rw-rw-r-- 1 ruan ruan 87 3月 1 11:14 aa.py
drwxrwxr-x 2 ruan ruan 4096 3月 1 11:26 dist
-rw-r--r-- 1 ruan ruan 19784872 8月 29 2016 exxo-0.0.7.tar.xz
drwxrwxr-x 2 ruan ruan 4096 3月 1 11:24 __pycache__
-rw-rw-r-- 1 ruan ruan 505 3月 1 11:25 setup.py