Пользовательское расположение файла .pypirc

.pypirc ли setuptools файл .pypirc в настраиваемом местоположении, а не $HOME/.pypirc ? Я создаю работу jenkins для публикации во внутреннем репозитории и хочу, .pypirc файл .pypirc находился внутри рабочей области задания.

3 Solutions collect form web for “Пользовательское расположение файла .pypirc”

Возможно, вы захотите проверить шпагат . Этот инструмент позволяет указать пользовательский файл .pypirc помощью опции --config-file

Это можно выполнить, перегружая классы команд по умолчанию, используемые для связи с PyPI или вашим сервером пользовательских репозиториев. Это можно сделать в сценарии setup.py . Позвольте коду сначала поговорить:

 # this is your project's setup.py script import os from distutils.command.register import register as register_orig from distutils.command.upload import upload as upload_orig from setuptools import setup class register(register_orig): def _get_rc_file(self): return os.path.join('.', '.pypirc') class upload(upload_orig): def _get_rc_file(self): return os.path.join('.', '.pypirc') setup( name='myproj', ... cmdclass={ 'register': register, 'upload': upload, } ) 

Теперь, если вы позвоните, например,

 $ python setup.py sdist register upload 

учетные данные сервера будут взяты из .pypirc в каталоге проекта, а не по умолчанию ~/.pypirc .

Итак, в основном, все, что вам нужно сделать, это заменить команды register и upload своими собственными реализациями. Эти реализации переопределяют метод _get_rc_file с вашей собственной логикой. После этого не забудьте отрегулировать аргумент cmd_class в вашей setup чтобы вместо стандартных использовались ваши собственные классы команд.

Конечно, поскольку оба класса переопределяют один и тот же метод, вы можете префикс кода, например, написание класса mixin и повторное его использование и т. Д. Кроме того, если вы загружаете документы sphinx в PyPI с помощью команды upload_docs , вы должны перегрузить его таким же образом путь. В любом случае, вы должны получить основную идею перегрузки команд из приведенного выше фрагмента.

В последней версии setuptools (версия 29.0.1) файл .pypirc загружается из каталога $HOME (или %USERPROFILE% в Windows).

Это делается в классе setuptools.package_index.PyPIConfig . См. Исходный код GitHub:

 class PyPIConfig(configparser.RawConfigParser): def __init__(self): """ Load from ~/.pypirc """ defaults = dict.fromkeys(['username', 'password', 'repository'], '') configparser.RawConfigParser.__init__(self, defaults) rc = os.path.join(os.path.expanduser('~'), '.pypirc') if os.path.exists(rc): self.read(rc) 

Итак, единственным решением, которое я вижу, является временное переопределение переменной среды HOME перед запуском задания Jenkins.

  • Доступ к собственным метаданным яйца питона
  • easy_install с pypy, в то время как Python установлен
  • setuptools и pip: выбор минимальной и полной установки
  • Установка пакетов Python в Windows
  • Структура пакета Python, setup.py для запуска модульных тестов
  • не setup.py разработать использовать колесо для install_requires?
  • Где нос.коллектор ищет тесты?
  • Как предотвратить установку пакета setuptools как .egg
  • Какие инструменты существуют для кросс-создания установщика OSX для пакета python?
  • Как настройки, дистрибутивы и пипсы связаны друг с другом?
  • Pypi: запрещено хранить или редактировать информацию об упаковке
  • Python - лучший язык программирования в мире.