如何将 Python 模块与预编译的 .so
库打包在一起?具体来说,我该如何编写 setup.py
以便在 Python 中执行此操作
>>> import top_secret_wrapper
不用设置LD_LIBRARY_PATH
就能轻松找到top_secret.so
?
在我的模块开发环境中,我有以下文件结构:
.
├── top_secret_wrapper
│ ├── top_secret.so
│ └── __init__.py
└── setup.py
在 __init__.py
中,我有类似的东西:
import top_secret
这是我的setup.py
from setuptools import setup, Extension
setup(
name = 'top_secret_wrapper',
version = '0.1',
description = 'A Python wrapper for a top secret algorithm',
url = None,
author = 'James Bond',
author_email = 'James.Bond.007@mi6.org',
license = 'Spy Game License',
zip_safe = True,
)
我确定我的 setup.py
缺少指定 top_secret.so
位置的设置,但我不确定该怎么做。
最佳答案
我最后做的是:
setup(
name='py_my_lib',
version=version, # specified elsewhere
packages=[''],
package_dir={'': '.'},
package_data={'': ['py_my_lib.so']},
)
这样我就可以通过名称导入库,并且没有其他级别的嵌套:
import py_my_lib
不是
from py_my_lib_wrapper import py_my_lib
关于python - 使用已编译的动态共享库分发 Python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316177/