Пароль приложения Bitbucket отклонен для установки с использованием «pip», но работает для «pipenv»

Я должен предоставить доступ к частному репозиторию 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

Я что-то пропустил?

Две вещи: во-первых, проверьте соответствующие сообщения об ошибках для программного обеспечения, которое вы используете. Если это не поможет, второе — извлечь файл минимальный воспроизводимый пример.

Ulrich Eckhardt 07.04.2019 11:27

В стороне: вы можете рассмотреть возможность использования чего-то вроде Гемфури для размещения ваших частных пакетов.

Chris 07.04.2019 13:54

Измените протокол URL на git+https в своем requirements.txt.

hoefling 07.04.2019 14:07

@hoefling, не могли бы вы преобразовать свой комментарий в ответ? Изменение схемы URI, как вы предложили, решило проблему для меня.

kuza 07.04.2019 14:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
267
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку pip поддерживает установку из нескольких VCS, вам необходимо добавить префикс, идентифицирующий конкретную систему контроля версий при установке с URL-адреса репо. Примеры Git из раздела Гит:

pip currently supports cloning over git, git+http, git+https, git+ssh, git+git and git+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

Другие вопросы по теме