Странно, что нет встроенной поддержки для установки по умолчанию, но вот два варианта, которые могут помочь вам обойти это.
Вариант 1: Вероятно, самым простым решением было бы оставить ваш скрипт ~ / .pypirc без изменений и создать псевдонимы оболочки для внутренней и публичной загрузки. Это может дать вам больший контроль над настройкой вещей для вашего рабочего процесса.
С учетом этого .pypirc file:
[distutils]
index-servers =
pypi
internal
[pypi]
repository: http://pypi.python.org/pypi
username: brad
password: <pass>
[internal]
repository: http://localhost:8080
username: brad
password: <pass>
Создайте несколько псевдонимов оболочки (поместите эти определения в rcfile вашей оболочки, например, ~ / .bashrc ):
alias ppup_internal='python setup.py bdist_egg sdist upload -r internal'
alias ppup_public='python setup.py bdist_egg sdist upload'
Использование:
% ppup_internal
...
running upload
Submitting dist/foo-0.0.0.tar.gz to http://localhost:8080
Server response (200): OK
Вариант 2: Хак: вы можете обойти настройки по умолчанию, установив патчи
имя репозитория вверху ваших скриптов setup.py
from distutils import config
config.PyPIRCCommand.DEFAULT_REPOSITORY = 'internal'
from setuptools import setup
setup(
name='foo',
...
Выход:
% python setup.py sdist upload
...
running upload
Submitting dist/foo-0.0.0.tar.gz to http://localhost:8080
Server response (200): OK
% python setup.py sdist upload -r pypi
...
running upload
Submitting dist/foo-0.0.0.tar.gz to http://pypi.python.org/pypi
Server response (200): OK
Справочная информация: Если вы определите ключ [distutils] в .pypirc , команда загрузки по умолчанию будет pypi url , когда аргумент -r [репо] опущен. Соответствующий код находится в distutils.config.PyPIRCCommand :
class PyPIRCCommand(Command):
DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
def _read_pypirc(self):
if os.path.exists(rc):
self.announce('Using PyPI login from %s' % rc)
repository = self.repository or self.DEFAULT_REPOSITORY
realm = self.realm or self.DEFAULT_REALM
Старый формат .pypirc ожидал секцию [server-login] , которая была гораздо менее гибкой, поскольку определяла только один целевой репозиторий. Это нереализуемый вариант, так как приведенный ниже раздел [pypi] будет недоступен:
[server-login]
repository: http://localhost:8080
username: brad
password: <pass>
[pypi]
repository: http://pypi.python.org/pypi
username: brad
password: <pass>
Теперь по умолчанию distutils будет использовать эту цель:
% python setup.py sdist upload
...
running upload
Submitting dist/foo-0.0.0.tar.gz to http://localhost:8080
Server response (200): OK
Но вы не можете получить доступ к любым другим репозиториям: по умолчанию в нем установлены свойства [server-login] :
% python setup.py sdist upload -r pypi
...
running upload
Submitting dist/foo-0.0.0.tar.gz to http://localhost:8080
Server response (200): OK