Делает ли pip handle extras_requires из setuptools / распределяет источники на основе?

У меня есть пакет «A» с параметром setup.py и extras_requires, например:

extras_require = { 'ssh': ['paramiko'], }, 

И пакет «B», который зависит от использования:

  • Помещение отдельных пакетов python в одно и то же пространство имен?
  • Каков правильный способ установки pip, virtualenv и дистрибутива для Python?
  • Распределить / distutils указать версию Python
  • Как настройки, дистрибутивы и пипсы связаны друг с другом?
  • Что означает «ошибка: опция - единая версия - внешняя управляемая не распознана»?
  • Easy_install и pip сломались: pkg_resources.DistributionNotFound: распространять == 0.6.36
  •  install_requires = ['A[ssh]'] 

    Если я запускаю python setup.py install на пакете B, который использует setuptools.command.easy_install под капотом, extras_requires правильно разрешен, а paramiko установлен.

    Однако, если я запустил pip /path/to/B или pip hxxp://.../b-version.tar.gz , установлен пакет A, но paramiko – нет.

    Поскольку pip «устанавливается из источника», я не совсем уверен, почему это не работает. Он должен вызывать setup.py из B, а затем разрешать и устанавливать зависимости как B, так и A.

    Это возможно с пипсом?

  • Как установить несколько пакетов python сразу с помощью pip
  • Не удалось найти версию, удовлетворяющую требованию <package>
  • Не удается установить частный репозиторий github с помощью pip
  • PIP Install Numpy выдает ошибку «ascii-кодек не может декодировать байт 0xe2»
  • См., Когда пакеты были установлены / обновлены с помощью pip
  • Объединение conda environment.yml с pip requrements.txt
  • 2 Solutions collect form web for “Делает ли pip handle extras_requires из setuptools / распределяет источники на основе?”

    Это подтверждается, начиная с пункта 1.1, который был выпущен в феврале 2012 года (через год после запроса этого вопроса).

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

     #!/usr/bin/env python from setuptools import setup from myproject import __version__ required = [ 'gevent', 'flask', ... ] extras = { 'develop': [ 'Fabric', 'nose', ] } setup( name="my-project", version=__version__, description="My awsome project.", packages=[ "my_project" ], include_package_data=True, zip_safe=False, scripts=[ 'runmyproject', ], install_requires=required, extras_require=extras, ) 

    Чтобы установить пакет:

     $ pip install -e . # only installs "required" 

    Развивать:

     $ pip install -e .[develop] # installs develop dependencies 
    Python - лучший язык программирования в мире.