当前位置:  开发笔记 > 编程语言 > 正文

关于Setuptools和替代品的问题

如何解决《关于Setuptools和替代品的问题》经验,为你挑选了1个好方法。

我最近看到了很多关于互联网的设置工具.最近,我阅读了James Bennett的On包装文章,了解为什么没有人应该使用setuptools.从我在Freenode的#python时代开始,我知道那里有一些人绝对厌恶它.我会把自己算在他们中间,但我确实使用它.

我已经使用setuptools进行足够的项目来了解它的不足之处,我更喜欢更好的东西.我并不特别喜欢鸡蛋格式以及它是如何部署的.由于所有setuptools的问题,我还没有找到更好的选择.

我对像pip这样的工具的理解是,它意味着是一个easy_install替代品(不是setuptools).实际上,pip使用了一些setuptools组件,对吧?

我的大多数软件包都使用了setuptools-aware的setup.py,它声明了所有依赖项.当他们准备好了,我将构建一个sdist,bdist和bdist_egg,并将它们上传到pypi.

如果我想切换到使用pip,我需要做些什么样的更改才能摆脱easy_install依赖?声明的依赖项在哪里?我猜我需要摆脱使用egg格式,并提供源代码分发.如果是这样,我如何生成egg-info目录?或者我甚至需要?

这将如何改变我对virtualenv的使用?virtualenv不使用easy_install来管理环境吗?

这会如何改变我对"开发"命令提供的setuptools的使用?我不应该使用它吗?有什么选择?

我基本上试图了解我的开发工作流程的样子.

在任何人建议之前,我不是在寻找依赖于操作系统的解决方案.我主要关注的是debian linux,但deb包不是一个选项,因为Ian Bicking 在这里概述了这个原因.



1> ianb..:

pip使用Setuptools,不需要对包进行任何更改.它实际上使用Setuptools安装包,使用:

python -c 'import setuptools; __file__="setup.py"; execfile(__file__)' \
    install \
    --single-version-externally-managed

因为它使用那个选项(--single-version-externally-managed)它不会将鸡蛋作为zip文件安装,不支持多个同时安装的软件版本,并且软件包是平面安装的(python setup.py install如果你只使用distutils 就像工作一样).仍然安装了Egg元数据.pip也像easy_install一样,下载并安装包的所有要求.

此外,您还可以使用需求文件添加应该批量安装的其他软件包,并使版本要求更加准确(无需在setup.py文件中添加这些确切的要求).但是如果你不创建需求文件,那么你就像使用easy_install一样使用它.

对于你install_requires我不建议任何改变,除非你一直试图在那里创建非常精确的要求,这些要求是已知的.我认为你在setup.py有关版本的文件中有多精确地存在一个限制,因为你无法真正知道新库的未来兼容性是什么样的,我不建议你尝试预测这个.需求文件是制定保守版本要求的替代位置.

你仍然可以使用python setup.py develop,事实上,如果你这样做pip install -e svn+http://mysite/svn/Project/trunk#egg=Project,将检查出(进入src/project)并运行setup.py develop它.所以工作流程并没有任何不同.

如果你详细地运行pip(比如pip install -vv),你会看到许多运行的命令,你可能会认识到它们中的大多数.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有