[О блоге] [наверх] [пред] [2020-02-07 00:19:56+03:00] [aa5ed952b6d9b9ace12c5318745a1e88352ffa8f]

GoCheese, Py27 и setuptools

С 2020-го года Python2 решили похоронить и сделали не шибко приятную
штуку: одна из очередных версий setuptools более не работает под py27.
Если я делаю mkvirtualenv для py27, то он по умолчанию ставит
setuptools, который подтягивается самый свежий и падает из-за
несовместимости. Можно указать --no-setuptools, сделать venv, а уже в
нём поставить работающий pip install setuptools==42.0.2. Но, у многих
пакетов среди зависимостей setuptools тоже указан и с таким условием,
что они всё-равно будут пытаться утащить более новый (чем 42) setuptools
и тоже упадут при установке. Способа сказать глобально, чтобы не тянул
setuptools более новый чем 42, тем более, что он уже стоит в venv-е, я
не нашёл.

С момента большого релиза GoCheese я его стал на постоянной основе
использовать локально для кэширования всех пакетов (родной кэш pip...
мягко говоря, не работает, не хочу даже разбираться почему), ибо с ним
легко управляться, он быстр и легко ставится (даже не требует конфигов и
запускается просто как ./gocheese). По началу я удалил все более новые
версии setuptools в нём и указал в pip.conf использовать URL GoCheese
который не ходит в upstream за обновлением новых версий. Это работает и
решает проблему с setuptools.

Однако мне всё же хочется для ряда пакетов чтобы они обновлялись!
Возиться с каждым пакетом вручную, возможно указывая pip install-у
разные URL-ы -- геморрой. Проблему решил просто: указал GoCheese-у что
setuptools это приватный/внутренний пакет и в upstream он не ходит за
обновлениями: touch packages/setuptools/.internal. Проблема с созданием
и заполнением py27 venv-ов у меня полностью решилась, при этом всё везде
кэшируется, обновляется и работает.

    [оставить комментарий]