настроить setup.py для обеспечения нескольких режимов установки - PullRequest
0 голосов
/ 17 декабря 2018

Есть ли какое-либо решение для создания конкретной установки пакета python с помощью setup.py?

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

Редактировать

Возможно, мое первое сообщение было неясным, ниже я попытаюсь дать лучшее объяснение.

У нас есть общий пакет python для того, чтобы поделиться некоторым кодом со всей компаниейтехникЭтот пакет находится в частном репозитории и устанавливается через pip.

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

Мне было интересно, можно ли было как-то создать собственный скрипт setup.py, который позволит пользователю устанавливать только небольшую часть модуля, а не всю.

Спасибо за вашпомощь

Ответы [ 2 ]

0 голосов
/ 28 января 2019

В вашем setup.py должна быть строка, например:

setup(
    # ...
    packages=find_packages(),
    # ...
)

, чтобы решить вашу проблему, вам нужно работать с этим методом find_packages, эта функция возвращает список пакетов Python в этом проекте

так что решение простое, получите аргументы пользователей для setup.py и на основе этого верните выбор find_packages

, здесь приведен упрощенный код

if '--full' in sys.argv:
    packages = find_packages()
elif '--only-module-a':
    packages = [p for p in find_packages() if p.startswith('a')]

setup(
    # ...
    packages=packages,
    # ...
)

PS: как прокомментировал @hoefling, это решение является хакерским и может вызвать недопонимание для пользователей, вы должны разделить пакет на меньшие подпакеты (вы все равно можете хранить их в одном репо)

0 голосов
/ 17 декабря 2018

Вы пытались использовать pip freeze > requirements.txt для создания текстового файла всех установленных вами пакетов, редактирования пакетов и версий, которые вы хотите внутри этого текстового файла, а затем pip install -r requirements.txt для его установки в другом месте?

...