如何将未更改的C扩展打包为新Python包的一部分?

时间:2011-03-01 20:54:34

标签: python packaging distutils

我在没有更改C扩展名的情况下向pypi发布了新版本的Python包。由于我只更改了Python代码,而不是C代码,如何打包我为多个平台编译的共享库而无需重新编译?

1 个答案:

答案 0 :(得分:1)

作为一个名为'somelib'的库的示例,在两个子目录中有编译库,lib-i386和lib-amd64:

MANIFEST.in包含以下内容:

include __init__.py
include setup.py
include somelib/*
include somelib/lib-i386/*
include somelib/lib-amd64/*

setup.py包含(我省略了对版本控制问题不重要的行):

# Determine machine arhitecture
arch = os.uname()[4]
libname = "lib-%s" % (arch,)
lib_files = glob.glob('./somelib/' + libname + '/*')
data_files = [('somelib', 
              lib_files + ['__init__.py', 'somelib/README.TXT']),]

setup(
   ... 
   data_files=data_files
)

所有库对象都在包内,但只安装了特定于'arch'的库对象。

HTH。