如何将Python代码打包成动态链接库(.so)文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计254个文字,预计阅读时间需要2分钟。
python使用wget下载get-pip.py文件wget https://bootstrap.pypa.io/get-pip.py
使用pip安装cythonpython get-pip.pypip install cython
编写setup.py文件setup.py文件内容如下:from distutils.core import setupfrom distutils.extension import Extensionfrom Cython.Build import cythonize
setup( ext_modules=cythonize(Extension(your_module_name, [your_module.pyx])))
wget bootstrap.pypa.io/get-pip.py python get-pip.py pip install cython
.编写setput.py文件:
setup.py文件内容如下:
from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize extensions = [Extension("ln_facedetector", ["ln_facedetector.py"], include_dirs=["/usr/local/lib"], libraries=["/usr/local/lib/python3.6/site-packages/cv2/cv2.cpython-36m-x86_64-linux-gnu.so", "/usr/local/lib/python3.6/site-packages/dlib.cpython-36m-x86_64-linux-gnu.so"], library_dirs=["/usr/local/lib/python3.6/site-packages/cv2","/usr/local/lib/python3.6/site-packages"])] setup(ext_modules=cythonize(extensions))
整个工程中包括多少个py文件,就写多少个Extension,并把需要调用的其他库路径在include_dirs、libraries、library_dirs中进行设置。
编译so文件,执行以下命令:
python setup.py build_ext
调用so文件:
import sys sys.path.append(‘/vloum/faceSO/ln_facedetector‘) #加载so文件(入参为so文件路径) from ln_facedetector import faceutil #import so文件中的相关类 arr = faceutil.detection("/vloum/faceSO/a.jpg") print(arr)
本文共计254个文字,预计阅读时间需要2分钟。
python使用wget下载get-pip.py文件wget https://bootstrap.pypa.io/get-pip.py
使用pip安装cythonpython get-pip.pypip install cython
编写setup.py文件setup.py文件内容如下:from distutils.core import setupfrom distutils.extension import Extensionfrom Cython.Build import cythonize
setup( ext_modules=cythonize(Extension(your_module_name, [your_module.pyx])))
wget bootstrap.pypa.io/get-pip.py python get-pip.py pip install cython
.编写setput.py文件:
setup.py文件内容如下:
from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize extensions = [Extension("ln_facedetector", ["ln_facedetector.py"], include_dirs=["/usr/local/lib"], libraries=["/usr/local/lib/python3.6/site-packages/cv2/cv2.cpython-36m-x86_64-linux-gnu.so", "/usr/local/lib/python3.6/site-packages/dlib.cpython-36m-x86_64-linux-gnu.so"], library_dirs=["/usr/local/lib/python3.6/site-packages/cv2","/usr/local/lib/python3.6/site-packages"])] setup(ext_modules=cythonize(extensions))
整个工程中包括多少个py文件,就写多少个Extension,并把需要调用的其他库路径在include_dirs、libraries、library_dirs中进行设置。
编译so文件,执行以下命令:
python setup.py build_ext
调用so文件:
import sys sys.path.append(‘/vloum/faceSO/ln_facedetector‘) #加载so文件(入参为so文件路径) from ln_facedetector import faceutil #import so文件中的相关类 arr = faceutil.detection("/vloum/faceSO/a.jpg") print(arr)

