From aa5ed952b6d9b9ace12c5318745a1e88352ffa8f Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 7 Feb 2020 00:19:56 +0300 Subject: [PATCH] =?utf8?q?GoCheese,=20Py27=20=D0=B8=20setuptools?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit С 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-ов у меня полностью решилась, при этом всё везде кэшируется, обновляется и работает. -- 2.50.0