将.py文件编译为.so文件
首先,安装python-dev、gcc环境
然后使用pip安装Cython
接下来编写setup.py,内容如下:
from distutils.core import setup
from Cython.Build import cythonize
# 需要编译的文件列表
setup(ext_modules = cythonize(["Common.py", "MySQL.py", "WorkFlow.py", "main.py"]))
执行如下命令完成编译
python setup.py build_ext
编译完成后,当前目录会生成bulid目录,将其下lib.开头的目录中的.so文件拷贝到生产环境中即可
最后,在生产环境中调用,
比如程序的入口在main.py中main方法,代码如下,
def main():
app.run(host='0.0.0.0', port=80)
则调用时代码如下
import main
main.main()
PS:window + python3环境中需要安装VC2010及以上版本,具体版本参考python3的编译时VC版本,查看方法:
import sys
print(sys.version)
'3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)]'
MSC v.1900 64 bit,
majorVersion = int(s[:-2]) - 6
minorVersion = int(s[2:3]) / 10.0
即:
majorVersion = 19 - 6
minorVersion = 0 / 10.0
majorVersion + minorVersion = 13 + 0.0 = 13.0
即,当前python3使用的是VC2015版本
即:安装VS2015,重点是VC++相关组部件
另外,在windows环境中生成的是.pyd文件,python调用.pyd的方法
# 源文件 test.py
class Hello:
def work(self):
print("hello word!")
# 编译后生成 test.xxxx.pyd,重命名为test.pyd并放置于调用文件同目录
# 调用文件 main.py
import test as testapp
h = testapp.Hello()
h.work()