Я должен предоставить доступ к частному репозиторию BitBucket, чтобы пакеты Python нашей команды можно было установить из Google App Engine.
Я создал пароль приложения только с одним разрешением «Чтение репозитория» и смог использовать его для клонирования моего репозитория, и у меня не было проблем с установкой моего пакета с помощью pipenv
, но pip
действительно получает HTTP 403 от BitBucket:
Collecting my-package-0.1.0.beta1 from https://my_user:****@bitbucket.org/my-team/[email protected]#egg=my-package-0.1.0.beta1 (from -r requirements.txt (line 35))
HTTP error 403 while getting https://my_user:****@bitbucket.org/my-team/[email protected]#egg=my-package-0.1.0.beta1
Could not install requirement my-package-0.1.0.beta1 from https://my_user:****@bitbucket.org/my-team/[email protected]#egg=my-package-0.1.0.beta1 (from -r requirements.txt (line 35)) because of error 403 Client Error: Forbidden for url: https://bitbucket.org/my-team/[email protected]
В моей requirements.txt
35-й строке стоит https://${BIT_USER}:${BIT_PASS}@bitbucket.org/my-team/[email protected]#egg=my-package-0.1.0.beta1
Клонирование с помощью командной строки: git clone "https://${BIT_USER}:${BIT_PASS}@bitbucket.org/my-team/my_repo.git"
работает как шарм и pipenv
устанавливается без проблем, имея эту строку: my-package = {git = "https://my_user:[email protected]/my-team/my_repo.git",ref = "v0.1"}
в моем Pipfile
.
Обратите внимание, что при установке с помощью pipenv после запуска pip freeze
я вижу, что мой пакет указан как my-package==0.1.0b1
, даже его версия в setup.py
равна 0.1.0.beta1
Я что-то пропустил?
В стороне: вы можете рассмотреть возможность использования чего-то вроде Гемфури для размещения ваших частных пакетов.
Измените протокол URL на git+https
в своем requirements.txt
.
@hoefling, не могли бы вы преобразовать свой комментарий в ответ? Изменение схемы URI, как вы предложили, решило проблему для меня.
Поскольку pip
поддерживает установку из нескольких VCS, вам необходимо добавить префикс, идентифицирующий конкретную систему контроля версий при установке с URL-адреса репо. Примеры Git из раздела Гит:
pip
currently supports cloning overgit
,git+http
,git+https
,git+ssh
,git+git
andgit+file
:Here are the supported forms:
[-e] git://git.example.com/MyProject#egg=MyProject [-e] git+http://git.example.com/MyProject#egg=MyProject [-e] git+https://git.example.com/MyProject#egg=MyProject [-e] git+ssh://git.example.com/MyProject#egg=MyProject [-e] git+git://git.example.com/MyProject#egg=MyProject [-e] git+file:///home/user/projects/MyProject#egg=MyProject -e [email protected]:MyProject#egg=MyProject
Две вещи: во-первых, проверьте соответствующие сообщения об ошибках для программного обеспечения, которое вы используете. Если это не поможет, второе — извлечь файл минимальный воспроизводимый пример.