让Python包以不同名称自我安装
我正在开发一个叫做 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上有不同的名字,但我就让它们用相同的包名。