- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在我的 ~/.pypirc
文件中有多个 PyPI 服务器,这样我就可以根据项目轻松地发布到不同的服务器。
我的用例是这样的,我有一些内部项目要发布到内部 PyPI 服务器 (https://pypi.internal
),还有一些公共(public)项目想要发布到公共(public) PyPI。
这是我目前的尝试,但它不起作用。我想默认为 internal
,如果我想发布,则需要添加 -r pypi
(到 setup.py
命令)到公共(public)服务器。
[distutils]
index-servers =
internal
pypi
[internal]
repository: https://pypi.internal
username: brad
[pypi]
username: brad
我哪里错了?
最佳答案
奇怪的是,没有对设置默认值的内置支持,但这里有两个选项可以帮助您解决这个问题。
选项 1: 可能最简单的解决方案是保持 ~/.pypirc 脚本不变,并为内部和公共(public)上传创建 shell 别名。这可以让您更好地控制为您的工作流程定制的东西。
鉴于此 .pypirc 文件:
[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>
创建一些 shell 别名(将这些定义放在 shell 的 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
背景:如果您在.pypirc中定义[distutils]键,上传命令默认为pypi url 当省略 -r [repo] 参数时。相关代码在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
关于python - ~/.pypirc 中 distutils 的多服务器配置中的默认服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5467463/
setuptools 是否允许在自定义位置指定 .pypirc 文件而不是 $HOME/.pypirc?我正在设置一个 jenkins 作业以发布到内部存储库,并希望 .pypirc 文件位于作业的工
我正在尝试使用 CloudPypi 设置私有(private) Pypi 云。而且我真的不想将我的密码存储在 .pypirc 中。我希望每次上传包时都提示输入我的密码。 在Python documen
我已安装 pip pypirc 并使用必要的密码设置 ~/.pypirc 文件。为什么每次调用 python setup.py 时,tine 都要求输入密码? $twine upload --re
我想在我的 ~/.pypirc 文件中有多个 PyPI 服务器,这样我就可以根据项目轻松地发布到不同的服务器。 我的用例是这样的,我有一些内部项目要发布到内部 PyPI 服务器 (https://py
这件事让我抓狂。难道不能像下面这样简单地做一些事情吗? python setup.py sdist upload --username me --password 1234 或者提示输入密码: pyt
所以我创建了一个文件 ~/.pypirc [distutils] index-servers = custom [custom] repository: https://dist.secret
我的 .pypirc 文件: [distutils] index-servers = pypi internal [pypi] username:pypiusername password:p
我正在使用 ubuntu,我已经创建了一个 python 包,它已准备好在 PyPI 上注册,但是当我使用 python setup.py register 时,它显示如下错误: Server res
我是一名优秀的程序员,十分优秀!