Я пытаюсь установить пакет Python из частного репозитория GitHub. Для публичного репозитория я могу выполнить следующую команду, которая отлично работает:
pip install git+git://github.com/django/django.git
Однако, если я попробую это для частного хранилища:
pip install git+git://github.com/echweb/echweb-utils.git
Я получаю следующий вывод:
Downloading/unpacking git+git://github.com/echweb/echweb-utils.git
Cloning Git repository git://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build
Complete output from command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build:
fatal: The remote end hung up unexpectedly
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build...
----------------------------------------
Command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build failed with error code 128
Я думаю, это потому, что я пытаюсь получить доступ к частному репозиторию без какой-либо аутентификации. Поэтому я попытался использовать Git +, ssh
надеясь, что pip будет использовать мой открытый ключ SSH для аутентификации:
pip install git+ssh://github.com/echweb/echweb-utils.git
Это дает следующий вывод:
Downloading/unpacking git+ssh://github.com/echweb/echweb-utils.git
Cloning Git repository ssh://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build
Complete output from command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build:
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
----------------------------------------
Command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build failed with error code 128
Является ли то, что я пытаюсь достичь, возможно? Если так, как я могу это сделать?
eval $(ssh-agent); ssh-add ~/.ssh/github_id_rsa
а затем запустите установку pip, следуя указаниям pip.pypa.io/en/stable/reference/pip_install/#gitОтветы:
Вы можете использовать
git+ssh
схему URI, но вы должны установить имя пользователя:Вы видите
git@
часть в URI?PS: Также читайте о ключах развертывания .
PPS: В моей установке схема URI "git + ssh" работает только с "редактируемыми" требованиями:
Помните : измените
:
символ, которыйgit remote -v
печатается, на/
символ перед использованием адреса пульта вpip
команде:Если вы забудете, вы получите эту ошибку:
источник
git+ssh://git@github.com/echweb/echweb-utils.git
схему в моем файле требований. Я открыл новый вопрос здесь: stackoverflow.com/questions/18883430/… . Любая помощь будет отличной.git+ssh://git@github.com/echweb/echweb-utils.git
вrequirements.txt
работу тоже, что потрясающе.pip install git+ssh://git@github.com/echweb/echweb-utils.git@branch-name
В качестве дополнительной техники, если у вас есть локальный клонированный репозиторий, вы можете сделать:
Более современно, вы можете просто сделать это (и это
-e
будет означать, что вам не нужно фиксировать изменения, прежде чем они будут отражены):источник
Вы можете сделать это непосредственно с URL-адресом HTTPS следующим образом:
Это также работает, просто добавляя эту строку в файл require.txt , например, в проекте Django .
источник
Он также работает с Bitbucket :
Пип будет использовать ваши SSH ключи в этом случае.
источник
Мне было гораздо проще использовать токены, чем ключи SSH. Я не смог найти много хорошей документации по этому вопросу, поэтому я столкнулся с этим решением в основном методом проб и ошибок. Кроме того, установка из pip и setuptools имеет некоторые тонкие различия; но этот способ должен работать для обоих.
GitHub не предлагает (в настоящее время по состоянию на август 2016 года) простой способ получить zip / tarball из частных репозиториев. Поэтому вам нужно указать setuptools, чтобы сообщить setuptools, что вы указываете на Git-репозиторий:
Пара замечаний здесь:
0
) в конце линии, даже если есть не какой - либо пакет на PyPI . Это должно быть реальное число, а не слово.git+
чтобы сообщить setuptools, что нужно клонировать репозиторий, а не указывать на zip / tarballversion
может быть веткой, тегом или хэшем коммита--process-dependency-links
при установке из пипсаисточник
setup.py
не должно содержать конкретных зависимостей, только абстрактные. Это указывает на конкретную зависимость отsetup.py
.Синтаксис для файла требований приведен здесь:
https://pip.pypa.io/en/latest/reference/pip_install.html#requirements-file-format
Так, например, используйте:
если вы хотите, чтобы источник оставался после установки.
Или просто
если вы просто хотите, чтобы он был установлен.
источник
Я нашел способ автоматически 'pip установить' частный репозиторий GitLab, который не требует ввода пароля. Этот подход использует GitLab «Deploy Keys» и файл конфигурации SSH, поэтому вы можете развертывать с использованием ключей, отличных от ваших личных ключей SSH (в моем случае, для использования «ботом»). Возможно, кто-то добрый соул сможет проверить с помощью GitHub.
Создайте новый ключ SSH:
Файл должен отображаться как
~/.ssh/GitLab_Robot_Deploy_Key
и~/.ssh/GitLab_Robot_Deploy_Key.pub
.Скопируйте и вставьте содержимое
~/.ssh/GitLab_Robot_Deploy_Key.pub
файла в диалоговое окно GitLab «Deploy Keys».Протестируйте новый ключ развертывания
Следующая команда указывает SSH использовать ваш новый ключ развертывания для установки соединения. В случае успеха вы должны получить сообщение: «Добро пожаловать в GitLab, UserName!»
Создайте файл конфигурации SSH
Затем используйте редактор для создания
~/.ssh/config
файла. Добавьте следующее содержимое. Значение 'Host' может быть любым, чем вы хотите (просто запомните это, потому что вы будете использовать его позже). HostName - это URL-адрес вашего экземпляра GitLab. IdentifyFile - это путь к файлу ключа SSH, который вы создали на первом шаге.Укажите SSH на файл конфигурации
Oxyum дал нам рецепт использования pip с SSH:
Нам просто нужно немного его изменить, чтобы SSH использовал наш новый ключ развертывания. Мы делаем это, указывая SSH на запись Host в файле конфигурации SSH. Просто замените «gitlab.mycorp.com» в команде на имя хоста, которое мы использовали в файле конфигурации SSH:
Теперь пакет должен быть установлен без запроса пароля.
Ссылка А
Ссылка Б
источник
Когда я устанавливал с GitHub, я мог использовать:
Но, поскольку мне пришлось запускать pip as
sudo
, ключи SSH больше не работали с GitHub, и «git clone» завершился ошибкой «Permission denied (publickey)». Использованиеgit+https
позволило мне выполнить команду от имени sudo, и GitHub попросил у меня мой логин / пароль.источник
Вы также можете установить зависимость частного репозитория через URL-адрес git + https: //github.com / ..., указав учетные данные для входа (логин и пароль или токен развертывания) для curl с
.netrc
файлом:источник
Если вы хотите установить зависимости из файла требований на сервере CI или аналогично, вы можете сделать это:
В моем случае я использовал
GIT_USER=gitlab-ci-token
иGIT_PASS=${CI_JOB_TOKEN}
.Этот метод имеет явное преимущество. У вас есть один файл требований, который содержит все ваши зависимости.
источник
Если вы не хотите использовать SSH, вы можете добавить имя пользователя и пароль в URL-адресе HTTPS.
Код ниже предполагает, что у вас есть файл с именем «pass» в рабочем каталоге, который содержит ваш пароль.
источник
решение оксиума в порядке для этого ответа. Я просто хочу отметить, что вы должны быть осторожны, если вы устанавливаете с использованием
sudo
ключей, так как ключи должны храниться и для root (например,/root/.ssh
).Тогда вы можете напечатать
источник
--user
флаг или virtualenv.Если у вас есть собственная библиотека / пакет на GitHub, GitLab и т. Д., Вам нужно добавить тег для фиксации с конкретной версией библиотеки, например, v2.0, а затем вы можете установить свой пакет:
Это работает для меня. Другие решения не сработали для меня.
источник
Вот быстрый метод, который работал для меня. Просто раскройте репо и установите его из своей учетной записи GitHub с
источник
Просто скопируйте пульт из оригинальной
git clone
команды (или изgit remote -v
). Вы получите что-то вроде этого:Bitbucket:
git+ssh://git@bitbucket.org:your_account/my_pro.git
GitHub:
git+ssh://git@github.com:your_account/my_pro.git
Далее нужно заменить
:
на/
рядом с доменным именем.Так что установите с помощью:
источник
Вы можете попробовать
без
ssh:...
. Это подходит для меня.источник