使用PyPI+打包Python应用程序;操作系统级依赖项

使用PyPI+打包Python应用程序;操作系统级依赖项,python,packaging,pip,pypi,Python,Packaging,Pip,Pypi,我想为PyPI打包一个Python科学应用程序。我的问题是,它依赖于PyPI级别的DEP(如numpy、scipy等)以及其他必须在操作系统级别处理的DEP:wxPython和Python VTK(如在Ubuntu上使用apt、在OSX上使用自制软件等) 我想知道做这件事的理想策略是什么,特别是哪种包装系统最适合(我目前倾向于分发)。Distribute是setuptools的一个分支,可能有更好的文档。基本上,您可以选择distutils(stdlib)和setuptools。由于distut

我想为PyPI打包一个Python科学应用程序。我的问题是,它依赖于PyPI级别的DEP(如numpy、scipy等)以及其他必须在操作系统级别处理的DEP:wxPython和Python VTK(如在Ubuntu上使用apt、在OSX上使用自制软件等)


我想知道做这件事的理想策略是什么,特别是哪种包装系统最适合(我目前倾向于分发)。

Distribute
setuptools
的一个分支,可能有更好的文档。基本上,您可以选择
distutils
(stdlib)和
setuptools
。由于
distutils
不允许您指定依赖项,因此只剩下
setuptools


您通常会列出所有依赖项,并清楚地记录安装过程(包括推送到PyPI的long_description字段)。包括操作系统级安装的软件包,大多数发行版在安装这些软件包时都包含egg信息。

谢谢Martijn。除了清楚地列出和记录安装步骤外,setuptools是否提供了一些额外的机制,可以帮助编写操作系统级DEP安装的脚本?如果没有,我想知道在PyPI上注册我的包有什么好处(我的意思是,如果它需要用户执行额外的手动步骤,即如果它不能完全自动化这个过程)。不,对不起。无论是setuptools还是安装工具(pip、easy_install、zc.buildout)都不支持这一点。但是,即使PyPI上有许多可用的鸡蛋,您仍然需要安装操作系统级依赖项;cxOracle需要oracle驱动程序,PIL需要libjpeg等。此外,您的一些依赖项最好由操作系统安装,但也可以作为鸡蛋安装。这是一个仅用工具难以解决的问题,因此文档是更好的方法。