现在需要将 Python 源码打包成 SO 文件,然后给再用 Python 调用这个生成的 SO 文件。
我查了一些资料,例如 https://www.cnblogs.com/ke10/p/py2so.html,然后照着生成了 SO 文件,接着在使用 ctypes 调用的时候出了问题,报错 AttributeError: build/lib.linux-x86_64-3.6/test.cpython-36m-x86_64-linux-gnu.so: undefined symbol: np_add
。
test.py
文件:
import numpy as np
def np_add(x, y):
return x + y
if __name__ == "__main__":
x = 1
y = 2
print(f"{x} + {y} = {np_add(x, y)}")
setup.py
文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("test.py"))
各位有什么建议吗?或者说不采取这种方法,有其他经过试验的方法可以成功打包并成功调用的吗?
希望过来人给点建议,先谢谢了。
1
holajamc 2018-12-06 16:49:46 +08:00
http://nuitka.net/
试试这个~ |
2
anonymous256 2018-12-06 17:00:59 +08:00
我在 win 下是编译成功的, 你的环境里可能没有安装 swig. which swig 你检查一下
而且似乎你写了一条没有用的语句: if __name__ == "__main__" ,,这是无效的, 既然已经用了 cython, 则不存在 main 的入口. |
3
anonymous256 2018-12-06 17:18:02 +08:00 via Android
|