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

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

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

Есть ли способ принудительно использовать ссылку из dependency_links? Или это единственный способ изменить номер версии в forked repo?

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

Обновить

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

  • setup_requires с Cython?
  • Если py2exe включает мои файлы данных (например, include_package_data)
  • python setuptools install_requires игнорируется при переопределении cmdclass
  • Как решить проблему pkg_resources.VersionConflict во время bin / python bootstrap.py -d
  • PIP устанавливает пакет Python без файла setup.py?
  • Установка SetupTools в 64-разрядной Windows
  • Как удалить пакеты, установленные с помощью easy_install Python?
  • Простой пакет Hello World setuptools и установка его с помощью pip
  • 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 - лучший язык программирования в мире.