Я разрабатываю пакет под названием garlicsim
. ( Website .) Пакет предназначен для 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 на развилке, а не в той же кодовой базе; Для меня важно, чтобы база кода была чистой, и я действительно не хотел бы вводить хаки совместимости.