2016-08-26 10 views
1

Я не думаю, что это дубликат, потому что я пробовал все ссылки, которые я мог найти за последние 2 часа, и ни один отработанных решений. Я хочу, чтобы пользователь мог клонировать репозиторий, cd в каталог, и запустить $ pip install . (или, по меньшей мере, pip install --process-dependency-links .) для установки пакета, его PyPi зависимости И его (последний) частных зависимости GitHub предполагающего пользователя разрешения на чтение для них. (Также разработчики должны иметь возможность запускать $ pip install -e .)Как использовать `pip` и setup.py для автоматической установки зависимостей, которые могут быть частными репозиториями, размещенными на github

мои setup.py:

setup (
    ... 
    install_requires=[' 
     ... 
     private-pkg 
     ... 
    ], 
    dependency_links=[ 
     'git+ssh://[email protected]/private-org/[email protected]#egg=private-pkg'], 
    ) 

Я также попробовал различные варианты для dependency_links:

Я также попытался добавить заднюю -1.0.0 (для версии), и он не работает, но в любом случае, я хотел бы, чтобы пользователь имел возможность установить самую последнюю версию

Обратите внимание, что я могу сделать:

pip install "git+https://github.com/private-org/private-pkg" и он отлично работает, но я не могу получить pip install . для работы независимо от того, что.

Все это терпеть неудачу с такой же ошибкой:

Could not find a version that satisfies the requirement private-pkg (from my-pkg==1.0.0) (form versions:) No matching distribution found for private-pkg (from my-pkg==1.0.0)

Запуск его pip install -vvv . показывает, что pip никогда не ищет ссылку мерзавца, но запустить его с pip install --process-dependency-links -vvv . пытается извлечь его, но терпит неудачу по различным причинам («Невозможно просмотреть URL-адрес git» или «Не удалось получить URL-адрес»). Обратите внимание, что --process-dependency-links отмечен как устаревший.

ответ

2

pip рассчитывает иметь ссылку на страницу индекса (например, PyPI) в dependency_links. Любая ссылка на VCS будет пропущена. Такое поведение было изменено в commit 26facdd.

Я рекомендую определить все внешние зависимости в файле requirements.txt, а затем запустить pip install -r requirements.txt. Пример requirements.txt:

foo>=1.0 
-e git+ssh://[email protected]/private-org/[email protected]#egg=private-pkg 

Смотрите также How to state in requirements.txt a direct github source

Существует статья о setup.py vs requirements.txt, который описывает эту ошибочную особенность.

 Смежные вопросы

  • Нет связанных вопросов^_^