PyPI
https://help.sonatype.com/repomanager3/formats/pypi-repositories
У меня задача - создать локальный репозитрий, куда загрузить необходимые проектам зависимости.
Итак. Я создал в nexus репозитрий pypi hosted и назвал его pypi-local.
В итоге - он доступен по адресу: http://repos.rdleas.ru/repository/pypi-local/
Использование созданного репозитория
Для того, чтобы использовать созданный репозиторий нужно прописать его в файле pip.conf. В засисимости от обстоятельств, расположение этого файла может быть различным: https://pip.pypa.io/en/stable/user_guide/#config-file
[global] index = http://repos.rdleas.ru/repository/pypi-local/pypi index-url = http://repos.rdleas.ru/repository/pypi-local/simple #cert = nexus.pem
Если репозитрий защищен паролем, то учестные данные можно прописать в файле .pypirc
[distutils] index-servers = pypi [pypi] repository: http://repos.rdleas.ru/repository/pypi-local/ username: admin password: admin123
Если репозиторий http (не https), то нужно прописать его в trusted hosts:
[global] trusted-host = repos.rdleas.ru index = http://repos.rdleas.ru/repository/pypi-local/pypi index-url = http://repos.rdleas.ru/repository/pypi-local/simple
Как загружать пакеты в репозиторий pypi
https://packaging.python.org/tutorials/packaging-projects/#uploading-the-distribution-archives
Для того чтобы запушить пакет в созданный репозиторий воспользуемся twine.
Установим его:
sudo pip3 install twine
Теперь можно аплоадить. Ключ -r (или –repository) указывает на репозитрий, прописанный в .pypirc:
twine upload -r pypi <filename>
Скрипт
#!/bin/bash set +e packages="./packages" proxy_user="user" proxy_pass="pass" sudo bash -c "pip3 install --proxy http://$proxy_user:$proxy_pass@10.77.70.6:3128 twine" while read -r package do echo "+++++++++++++++++++++++ $package +++++++++++++++++++++++++" bash -c "pip3 download --proxy http://$proxy_user:$proxy_pass@10.77.70.6:3128 $package" done < "$packages" for f in ./*.whl ./*.tar.gz do echo "Uploading $f" twine upload -r pypi $f done
Discussion