我使用ctypes为单元库编写了Python绑定.绑定本身只有~100行Python.该库有一个不必要的(为了Python绑定的目的)依赖于tcl,如果没有tcl,配置脚本将失败.但是,该库可以很好地构建gcc -Wl,-soname,units.so -o units.so -fPIC -shared units.c.
我现在想发布这些绑定.我有三种方法可以做到这一点.
如果我选择选项2,我应该在哪里放置库?我应该把它放在与.py文件相同的目录中,允许我假设lib_name = CDLL('./units.extension'),还是应该把它放在一个往往在链接器路径中的目录(比如/ lib)?另外,对于Windows机器,这通常如何处理,a)可能没有C编译器,b)没有标准位置来放置共享库?
哪些选项是首选,我应该怎么做Windows案例?
该库似乎units已经超过 5 年没有修改过,因此选项 2 可能是最好的选择。主要发行版之一也不太可能将其打包(例如,我在 Ubuntu Lucid 或 Macports 中找不到它)。
例如,将units.c和units.h复制到您的项目中并创建一个setup.py以将其与您的绑定一起编译和部署:
from setuptools import setup, Extension
sources = ['src/units.c']
ext_opts = {'extra_compile_args': ['-Wl,-soname,units.so', '-Isrc']}
setup(
name='units',
ext_modules = [Extension('units', sources, **ext_opts)]
)
Run Code Online (Sandbox Code Playgroud)