让Python包以不同名称自我安装

5 投票
1 回答
684 浏览
提问于 2025-04-15 23:15

我正在开发一个叫做 garlicsim 的软件包。(网站.) 这个软件包是为了 Python 2.X 设计的,但我也提供了一个支持 Python 3 的不同版本,叫做 garlicsim_py3。(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 用户能够 import garlicsim,并且一直用 garlicsim 来引用这个模块,但实际上它是 garlicsim_py3

我知道 Distribute 项目做过类似的事情:他们让你可以导入 setuptools,然后会自动转到他们的代码。我不知道他们是怎么做到的。

有什么想法吗?


(1) 我决定在一个分支上支持 Python 3,而不是在同一个代码库里;对我来说,保持代码库的整洁很重要,我真的不想引入兼容性的小技巧。

1 个回答

1

最后我决定不这样做,两个项目虽然在PyPI上有不同的名字,但我就让它们用相同的包名。

撰写回答