好的,我想创建一个包含 C 模块的预构建 Python 包。也就是说,最后我想要一个 tarball,其中包含使用我的模块所需的所有内容并且可以安装 pip,即最后我可以执行以下操作:
pip install whatevertarballgetsproduced.tar.gz
和图书馆将可用。它还需要对虚拟环境友好。
我当前的目录结构是:
project/
+ setup.py
+ mylibrary/
+ __init__.py
+ mylibrary.py
+ _mylibrary.so
+ README
也就是说,编译后的 C 库在_mylibrary.so
. 派生此文件的 C 源代码不包含在 tarball 中。我也在 OSX (Lion) 上这样做。mylibrary.py
仅包含 C 库代码的 Python 包装器。
我如何实现这一目标?我想过做一个python setup.py bdist
,但这并不是我真正想要的(除非我错过了由它产生的 tarball 不能安装 pip 的东西)。
为了完成,我的 setup.py 看起来像:
from setuptools import setup
setup(
name='mylibrary_py3mac',
version='0.1.1',
description='My library which is tied to OSX & Python 3',
long_description=open('README').read(),
packages=['mylibrary'],
classifiers = [
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: MacOS :: MacOS X',
'Programming Language :: Python :: 3',
],
)
请注意,我不打算公开分发此 tarball,它仅用于内部部署目的(因此我不关心它被预编译或仅与 OSX 绑定)。