Установите с помощью pip версию разработки пакета python, но со стабильными зависимостями - PullRequest
0 голосов
/ 16 мая 2018

Фон

Команда pip install по умолчанию устанавливает самую последнюю стабильную версию пакета python (стабильные версии, указанные в PEP426 )

Флаг --pre для команды pip install говорит, что pip также рассмотрит варианты выпуска и develompent версии пакетов python.Насколько я понимаю, pip install --pre packageA установит версию dev packageA, но также версию dev всех ее зависимостей.

Вопрос:

Можно ли использовать pip для установки версии разработки пакета, но стабильных версий всех его зависимостей?

Попытки решения

Одна вещь, которую я пробовал, - установить стабильную версиюпакета (со стабильными зависимостями), а затем переустановите версию dev без зависимостей: pip install packageA pip install --pre --no-deps --upgrade --force-reinstall packageA Проблема, однако, заключается в том, что, если версия для разработки packageA добавляет новую зависимость, она не будет установлена.

Я что-то упустил?Спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Я пишу скрипт для этого (pip_install_dev_and_stable_of_dependencies.py):

#!/usr/bin/env python
import os
import sys


def get_installed_packages():
    with os.popen('pip freeze') as f:
        ss = f.read().strip().split('\n')
    return set([i.split('=')[0].strip().lower() for i in ss])


def install_pre_with_its_dependencies_stable(package):
    already_installed_packages = get_installed_packages()
    os.system('pip install --pre ' + package)
    dependencies = ' '.join([
        p for p in get_installed_packages()
        if p not in already_installed_packages | set([package])
    ])
    os.system('pip uninstall -y ' + dependencies)
    os.system('pip install ' + dependencies)


def main():
    for p in sys.argv[1:]:
        install_pre_with_its_dependencies_stable(p)


if __name__ == '__main__':
    main()

Использование:

(venv)$ chmod +x pip_install_dev_and_stable_of_dependencies.py
(venv)$ ./pip_install_dev_and_stable_of_dependencies.py pandas
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...