Пользовательское расположение файла .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.

  • Как отключить загрузку пакета в PyPi, если --public не передана команде upload
  • Почему я не могу установить Python 2.7 под Centos 5.5?
  • python setuptools install_requires игнорируется при переопределении cmdclass
  • Как импортировать пакет PIP через Jython?
  • Как предотвратить установку пакета setuptools как .egg
  • Разница между pip3 и `python3 setup.py install` в отношении аргумента cmdclass
  • Когда я запускаю setuptools .egg «как если бы это был сценарий оболочки», что на самом деле происходит?
  • Pypi: запрещено хранить или редактировать информацию об упаковке
  • Python - лучший язык программирования в мире.