形势
我正在尝试将一个开源库移植到Python3(如果有人想知道的话,可以使用SymPy)。
因此,在为Python3构建时,我需要自动运行2to3。为此,我需要使用distribute。因此,我需要移植当前的系统,这个系统(根据doctest)是distutils。
问题
不幸的是,我不知道这些模块之间有什么区别--distutils、distribute、setuptools。这些文档是最好的,因为它们似乎都是彼此的分叉,目的是在大多数情况下(但实际上不是全部)兼容…。等等,诸如此类。
问题
,有人能解释一下差异吗?,我该用什么?什么是最现代的解决方案?(顺便说一句,我也希望得到一些关于移植到Distribute的指导,但这超出了问题…的范围)
发布于 2011-06-14 14:00:51
注:回答不推荐,现在分发过时。这个答案不再有效,因为已经形成,并且已经做了大量的工作来清理这个问题。
是的,你明白了。-o我认为此时首选的包是分发,它是setuptools的分叉,它是distutils (原始打包系统)的扩展。setuptools没有被维护,因此is被分叉并重命名,但是在安装时它使用了Setuptools的包名!我认为大多数Python开发人员现在都使用分发,我可以肯定地说我使用了。
发布于 2011-07-29 14:16:08
我认识到,我回答了你的第二个问题,而没有谈到你原来问题中无可置疑的假设:
我正在尝试将一个开源库(如果有人想知道的话是SymPy)移植到Python3。要做到这一点,我需要在构建Python3时自动运行2-3。
你可以,不需要。其他策略在http://docs.python.org/dev/howto/pyporting中被描述。
要做到这一点,我需要使用分发,
您可以:) distutils以不同的方式支持代码(而不是docstring)的构建时2到3转换:http://docs.python.org/dev/howto/pyporting#during-installation
发布于 2014-09-29 21:26:30
2014年底更新了这个问题,幸运的是,连续统的"康达“包管理器已经大大消除了package混乱。
特别是,conda可以快速创建conda "环境“。您可以使用不同版本的Python配置您的环境。例如:
conda create -n py34 python=3.4 anaconda
conda create -n py26 python=2.6 anaconda
将使用不同版本的Python创建两个("py34“或"py26") Python环境。
之后,您可以使用以下特定版本的Python调用环境:
source activate <env name>
在您需要处理不同版本Python的情况下,这个特性似乎特别有用。
此外,conda还具有以下特点:
如果你在科学计算领域,最后一点尤其重要。
https://stackoverflow.com/questions/6344076
复制相似问题