缘起
golang将程序编译成一个可执行文件,部署起来特别方便。
那么Python是否也有类似解决方案呢?单一可执行文件,免去安装Python环境的麻烦,也避免了直接暴露源码程序。
经过多次搜索之后找到解决方案 exxo
注意:exxo只支持linux64平台
指路
安装
首先下载安装exxo
1 2 3 4 5
| wget 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 2
| exxo venv /tmp/myenv source /tmp/myenv/bin/activate
|
编译程序
先写一个简单的程序: aa.py
1 2 3 4 5 6 7
| import os
def main(): os.system('ls -al')
if __name__ == '__main__': main()
|
再根据这个程序编写setup.py, 这一步是关键,不熟悉的同学可以去学习一下setuptools的语法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| from setuptools import setup, find_packages
requirements = [ ]
setup( name='pyaa', version='0.0.1', packages=find_packages(), include_package_data=True, install_requires=requirements, zip_safe=True, py_modules=[ "aa", ], entry_points={ 'console_scripts': [ 'pyaa = aa:main', ] } )
|
执行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
|