Пип, чтобы выбрать пакеты из личного индекса над PyPi даже на конфликтах имен?

1

Я настроил сервер devpi для размещения своих собственных модулей Python. Я хотел бы использовать pip для их установки и pip для установки моих модулей, а не тех, что в PyPi.

Пока у меня есть это:

[global]
timeout = 60
index-url = http://devpi.example.org/root/public/+simple/
trusted-host = devpi.example.org
extra-index-url = http://devpi.example.org/root/pypi/+simple/

Который работает нормально, пока нет конфликта имен. Если есть, побеждает самая высокая версия, а это не то, что я хочу.

Я действительно не хочу регистрировать пустые проекты на PyPi только для того, чтобы зарезервировать имена.

Есть ли способ получить то, что я хочу?

  • 1
    Вы должны делегировать разрешение пакета на devpi : используйте единственный индекс, который наследуется от root/pypi . devpi установит пакеты из PyPI, если они не найдены в локальном индексе, действуя как прокси-сервер PyPI. Однако, если пакет предоставляется вашим локальным индексом, devpi будет использовать его независимо от того, какая версия доступна в PyPI. Это защита от подделки пакетов, она включена по умолчанию.
Теги:
pip
pypi
devpi

1 ответ

1

Модифицировал мой ~/.config/pip/pip.conf примерно так:

[global]
timeout = 60
trusted-host = devpi.example.org
index-url = http://devpi.example.org/root/public/+simple/

и убедился, что /root/public унаследован от /root/pypi так:

devpi use http://devpi.example.org/
devpi use http://devpi.example.org/root/public --set-cfg
devpi login root --password="MyS3kre7Pwd"
devpi index /root/public bases=root/pypi  # ← vital command.

Бег:

devpi list mead --all   

дает мне то, что я хотел:

http://devpi.example.org/root/public/+f/d12/59ed3e5cf01ca/mead-0.4.0.dev1.tar.gz
http://devpi.example.org/root/public/+f/046/0f3dee895eb46/mead-0.4.0.dev0.tar.gz
http://devpi.example.org/root/pypi/+f/978/98e728d01b4d3/mead-0.0.11.tar.gz    
http://devpi.example.org/root/pypi/+f/45d/b104905aeabc2/mead-0.0.10.tar.gz    
http://devpi.example.org/root/pypi/+f/da0/c1b3bf979ca6a/mead-0.0.9.tar.gz     
http://devpi.example.org/root/pypi/+f/49c/770889ecd3c7a/mead-0.0.8.tar.gz     
http://devpi.example.org/root/pypi/+f/12d/10190b47367e8/mead-0.0.7.tar.gz     
http://devpi.example.org/root/pypi/+f/34a/6dd6cd6c52c67/mead-0.0.6.tar.gz     
http://devpi.example.org/root/pypi/+f/ba8/0cd76854e2253/mead-0.0.5.tar.gz     
http://devpi.example.org/root/pypi/+f/1d7/6c5dd5229333b/mead-0.0.4.tar.gz     
http://devpi.example.org/root/pypi/+f/47d/208d9cba5ea4e/mead-0.0.3.tar.gz     
http://devpi.example.org/root/pypi/+f/20a/e16978e840e38/mead-0.0.2.tar.gz  
  • 1
    Хорошо, это именно то, что я имел в виду, используя единственный индекс, который наследуется от root/pypi . Теперь пакеты, не найденные в root/public будут извлечены из PyPI, а пакеты в PyPI будут игнорироваться, если вы зарегистрировали одну версию пакета в локальном индексе.
  • 0
    @hoefling Спасибо за ваш комментарий и время, чтобы прочитать мои разговоры.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню