Как я могу заставить setuptools установить пакет из другого источника, который также доступен на pypi с тем же номером версии?

Это аналогичный вопрос: как я могу заставить setuptools установить пакет, который не находится в PyPI? но не то же самое.

Поскольку я хотел бы использовать разветвленную версию некоторого пакета, setuptools игнорируют ссылку зависимости (так как она имеет тот же номер версии).

  • pip игнорирует dependency_links в setup.py
  • Стандартный способ создания пакетов debian для распространения программ Python?
  • python setuptools install_requires игнорируется при переопределении cmdclass
  • Почему «python setup.py sdist» создает нежелательные «PROJECT-egg.info» в корневом каталоге проекта?
  • Запуск пользовательской задачи при вызове `pip install`
  • MANIFEST.in игнорируется на "python setup.py install" - файлы данных не установлены?
  • Есть ли способ принудительно использовать ссылку из dependency_links? Или это единственный способ изменить номер версии в forked repo?

    requires = [ ... 'pyScss==1.1.3' ... dependencies = [ 'https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3' ] 

    Обновить

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

  • Крюк для добавления команд для создания distutils?
  • MANIFEST.in игнорируется на "python setup.py install" - файлы данных не установлены?
  • Как установить python-ldap на python 2.7 virtualenv на windows без компиляции
  • Автоматический номер версии как в setup.py (setuptools) И в исходном коде?
  • Python install uninstall easy_install
  • Если py2exe включает мои файлы данных (например, include_package_data)
  • 2 Solutions collect form web for “Как я могу заставить setuptools установить пакет из другого источника, который также доступен на pypi с тем же номером версии?”

    Я считаю, что вы можете просто использовать dependency_links как описано в этом вопросе:

     from setuptools import setup setup(name = 'mypkg', version = '0.0.1', description = 'Foo', author = 'bar', author_email = 'bar@example.com', install_requires = ['pyScss==1.1.3'], dependency_links = [ 'https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3' ] ) 

    Протестировано с использованием python setup.py develop

    Вероятно, вы захотите переименовать яйцо, чтобы подчеркнуть, что это вилка http://www.python.org/dev/peps/pep-0386/

    Вне setup.py вы можете принудительно выполнить это локально с помощью requirements.txt pip и pip . Хотя это не сделает ваш пакет зависимым от вилки, вы можете легко документировать его как способ установки.

     $ cat requirements.txt https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3 $ pip install -r requirements.txt 

    В итоге я сделал что-то очень похожее на ответ в stackoverflow.com/a/17442663/368102 .

    Мне нужен пакет github requests-file , который конфликтует с другим requests-file в PyPi. Оба они имеют версию 1.0, а версия PyPi имеет несколько более высоких версий.

    Обходной путь в моем ias_tools/setup.py выглядит так:

     setup( ... install_requires=[ 'requests-file<=99.99', ], dependency_links=[ 'https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip#egg=requests-file-99.99' ] ) 

    В моем случае я использую pip поэтому мне также пришлось использовать --process-dependency-links :

     % pip install --process-dependency-links ./ias_tools You are using pip version 6.0.6, however version 6.1.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Processing ./ias_tools DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release. Collecting requests-file<=99.99 (from ias-tools==0.1) Downloading https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip Requirement already satisfied (use --upgrade to upgrade): requests>=1.1.0 in ./venv/lib/python2.7/site-packages (from requests-file<=99.99->ias-tools==0.1) Installing collected packages: ias-tools, requests-file Running setup.py install for ias-tools Running setup.py install for requests-file Successfully installed ias-tools-0.1 requests-file-1.0 

    Я не слишком беспокоюсь об уведомлении об устаревании, так как запрос на подачу был отправлен в pip, чтобы осудить устаревание (после обсуждения об этом ).

    Python - лучший язык программирования в мире.