让Python包以不同的名称安装自己

我正在开发一个名为garlicsim的软件包. (Website.)该软件包适用于Python 2.X,但我也在另一个名为garlicsim_py3的fork上提供Python 3支持.(1)

因此,这两个软件包并存在PyPI上,Python 3用户安装了garlicsim_py3,Python 2用户安装了garlicsim.

问题是:当第三方模块想要使用garlicsim时,他们应该有一个包名称,而不是两个.当然,他们可以这样做:

try:
    import garlicsim
except ImportError:
    import garlicsim_py3 as garlicsim

但我宁愿不让这些模块的开发人员这样做.

有没有一种方法,garlicsim_py3将自己安置在别名garlicsim下?我想要的是Python 3用户能够导入garlicsim并始终将该模块称为garlicsim,但它确实是garlicsim_py3.

我知道Distribute项目的确是这样的:他们这样做就可以导入setuptools,它会被重定向到他们的代码中.我不知道他们是怎么做到的.

有任何想法吗?

(1)我已经决定在fork而不是在相同的代码库中支持Python 3;对我来说重要的是代码库是干净的,我真的不想引入兼容性的黑客攻击.

解决方法:

最终我决定不这样做,只是让两个项目具有相同的包名称,即使它们具有不同的PyPI名称.

上一篇:python – 不推荐使用`setup.cfg`吗?


下一篇:Python:如何使用setuptools连接到受保护的svn存储库