相关疑难解决方法(0)

如何禁用将包上传到 PyPi 除非将 --public 传递给上传命令

我正在开发包并将包的开发/测试/等版本上传到本地 devpi 服务器。

为了防止意外上传到PyPi,我采用了以下常见做法:

setup(...,
      classifiers=[
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Private :: Do not Upload"
     ],
     ...)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当我最终准备好将包上传到 PyPi 时呢?

我想出了一个完全丑陋但简单的技巧,它要求我将分类器定义为 setup() 调用之外的全局变量,如下所示:

CLASSIFIERS = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 2.7"
]


if "--public" not in sys.argv:
     CLASSIFIERS.append("Private :: Do Not Upload")
else:
     sys.argv.remove("--public")

setup(...
      classifiers=CLASSIFIERS,
      ...)
Run Code Online (Sandbox Code Playgroud)

另一个也许更简单的选择是仅仅注释掉“私人::请勿上传”,但这似乎并不比我的黑客更专业。

我想做的创建一个名为的上传命令的适当子类SafeUpload,并让它检查--publiccmd-line 选项。也许,由于在上传之前可能存在构建,因此SafeBuild …

python setuptools pypi devpi

5
推荐指数
1
解决办法
2768
查看次数

标签 统计

devpi ×1

pypi ×1

python ×1

setuptools ×1