好的,我想創建一個預先構建的包含C模塊的Python包。也就是說,在它結束時,我想有一個包含用我的模塊所需要的一切,是PIP安裝-能,即在最後,我可以做一個壓縮包:OSX上的預構建Python包
pip install whatevertarballgetsproduced.tar.gz
,並在MyLibrary將可。它還需要虛擬環境友好。
我現在的目錄結構:
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',
],
)
注意,我不上公開發布此壓縮包計劃,它僅用於內部部署的目的(所以爲什麼我不不關心它被預編譯,或僅與OSX綁定)。
忘了包含'__init __。py',謝謝指出。爲了回答你的問題:我確實嘗試過製作雞蛋,但正如你所提到的那樣.egg與Pip無關,這對我來說是一個關鍵要求。 – 2012-08-08 16:57:16
當您使用Pip安裝軟件包時,您的目標是Python虛擬環境還是直接安裝到全球站點軟件包中?在前一種情況下,您的Pip要求可能沒有實際意義,因爲現代'virtualenv'捆綁了pip和easy_install,這些工具可以很好地互操作。所以如果pip缺少一個功能,可以使用easy_install,如圖所示。 – 2012-08-08 20:49:21
實際上,在某些情況下,我需要定位全局站點包,而在其他情況下,我將使用虛擬環境。我還有一些其他的依賴項,這些依賴項在pip需求文件中指定,因此,不必爲該項目混合使用'easy_install'和'pip'進行包管理。 – 2012-08-09 16:15:28