Как добавить собственный индекс в pip, работающий в virtualenv?

  • У меня есть virtualenv с пипсом внутри.
  • У меня есть собственный индекс пакета.
  • Я хочу добавить этот пакет в pip, чтобы избежать вызова pip install some_package -i my_index все время
  • Я хочу добавить этот индекс только к этому конкретному экземпляру экземпляра, запущенному в virtualenv.

В этом случае, какой файл следует изменить и как?

Ответ 1

Я столкнулся с той же проблемой, и обнаружил, что pip поддерживает это в текущей версии де-факто https://pip.pypa.io/en/latest/user_guide.html#config-file

Внутри virtualenv:

В Unix и Mac OS X это файл $VIRTUAL_ENV/pip.conf
В Windows это файл: %VIRTUAL_ENV%\pip.ini

Ответ 2

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

В основном вам нужно добавить следующее к ~/.pip/pip.conf (в системах Windows, расположенных в %HOME%\pip\pip.ini):

[global]
index-url = http://my.pypi.index/comes/here

Проблема в том, что у вас будет глобальное определение для всех ваших проектов, а то, что вы хотите, - это определение для всех ваших пользователей в конкретном проекте. Из pip документации вы можете изменить поиск в конфигурационном файле, используя среду var PIP_CONFIG_FILE

Вы можете отредактировать virtual-env-folder/bin/activate script, чтобы включить эту среду var, но проблема в том, что создание новой виртуальной среды потеряет это изменение и не будет автоматизировано. Вы можете создать файл .pip/pip.conf в корне вашего проекта и создать простой activate-virtual-env script также в корне проекта:

pushd $(dirname $0)
export PIP_CONFIG_FILE="$(pwd)/.pip/pip.conf"
source "$(pwd)/virtual-env-folder/bin/activate"
popd

и проинструктируйте своих пользователей, чтобы они отправили этот файл вместо virtual-env-folder/bin/activate