setuptools
是否允许在自定义位置而不是.pypirc
中指定$HOME/.pypirc
文件?我正在设置一个Jenkins作业以发布到内部存储库,并希望.pypirc
文件位于作业的工作区内。
最佳答案
这可以通过重载用于与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
参数,以便使用自己的命令类而不是标准类。当然,由于这两个类都重新定义了相同的方法,您可以通过编写一个mixin类并重用它等来美化代码。此外,如果您通过
setup
命令将sphinx文档上载到pypi,则必须以相同的方式重载它。无论如何,您应该从上面的代码片段中了解命令重载的基本概念。关于python - .pypirc文件的自定义位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37845125/