Пип: установить зависимости как редактируемые

1

У меня есть собственное приложение Python, которое развертывается в виде набора пакетов, и мне нужно, чтобы разработчик мог быстро проверить все эти пакеты как редактируемый источник, чтобы все приложение можно было редактировать на месте, а также изменения в все пакеты легко отбрасываются на исходный сервер git. Кроме того, приложение должно быть внедрено в качестве традиционных пакетов не разработчиком.

Скажем, у меня есть пакет верхнего уровня с setup.py выглядит так:

# ...
setup(name="Foo",
      # ...
      url="https://mygitserver.com/Foo",
      install_requires=[
          "Bar>=0.0.1",
      ],
      dependency_links=["git+https://mygitserver.com/[email protected]#egg=Bar-0.0.1",],
      # ...
  )

Я могу установить этот пакет как редактируемый с помощью следующей команды:

pip3 install -e git+https://[email protected]/Foo#egg=Foo --process-dependency-links

Это создаст каталог src/foo и заполнит его исходным кодом для Foo извлеченным с сервера git. Это хорошо.

Зависимость, Bar, также извлекается с сервера git, но не устанавливается как редактируемая. pip3 freeze просто показывает его как обычный установленный пакет под названием Bar, поэтому URL-адрес git также теряется.

Есть ли способ вмешаться каким-то образом, и у вас есть возможность установить некоторые (не обязательно все) зависимости как редактируемые? Или мне нужно будет использовать requirements.txt в этом случае? Если мне нужно использовать requirements.txt, как я также гарантирую, что эти зависимости устанавливаются нормально при развертывании не-разработчиком?

Я знаю, что pip> 10 предназначен для устранения ссылок dependency_links но на данный момент я застрял с pip 9.0.2. Я использую Python 3.5. Я нацелен на встроенную платформу, которая затрудняет их изменение, поэтому эти версии - это то, с чем я работаю на данный момент. Если pip> = 10 может сделать что-то новое, чтобы помочь в этой области, тогда я могу посмотреть на модернизацию, это просто не тривиально делать в этой системе.

Теги:
pip
deployment
package

1 ответ

0

Вы могли бы просто pip install -e <Bar-URL> до этого, и когда вы установите Foo, pip увидит, что зависимость уже установлена. Оба будут доступны для редактирования.

  • 0
    Да, это будет работать, но это не очень масштабируемо. Пожалуйста, рассмотрите ситуацию, когда существует много таких зависимостей, указанных в setup.py - этот метод будет работать, но сначала мне понадобится pip, чтобы определить URL-адреса для каждой зависимости. Я могу сделать это, проанализировав setup.py 's install_requires и сопоставив с dependency_links но это утомительно. В случае не-разработчика, возможно, автоматизированной системы, она должна будет проработать все эти зависимости, а затем установить каждую из них самостоятельно, что обычно делает pip. Для простого проекта, такого как мой пример, он будет работать нормально.
  • 0
    Да, это не так, но вы сказали, что не хотите, чтобы все зависимости редактировались, только некоторые. Я понимаю, что вы хотите настроить их, каждый разработчик может установить их по-своему. В таком случае, я думаю, это лучшее, что ты мог сделать.
Показать ещё 1 комментарий

Ещё вопросы

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