使用Twine上传GitLab PyPI失败,遇InvalidConfiguration配置错误求助
解决Twine上传GitLab PyPI仓库时的InvalidConfiguration错误
核心问题分析
你的错误有两个关键点:
- 使用
--repository参数直接传入仓库URL,该参数实际是用来指定.pypirc中预定义的仓库名称,而非直接传URL - 宿主shell中设置的
TWINE_USERNAME和TWINE_PASSWORD没有传递到Docker容器内部,Twine无法获取认证信息
方法1:直接使用--repository-url参数(推荐)
不需要配置.pypirc,直接用--repository-url指定GitLab PyPI仓库地址,同时通过docker exec的-e参数传递认证环境变量到容器内:
docker exec -e TWINE_USERNAME=gitlab-ci-token -e TWINE_PASSWORD=${CI_JOB_TOKEN} cppbuilder python3 -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi /src_vol/build --verbose
关键修改说明
- 替换
--repository为--repository-url:该参数专门用于直接传入仓库URL,无需依赖.pypirc配置 - 用
-e参数传递环境变量:确保容器内的Twine进程能获取到用户名和密码,避免宿主环境变量无法穿透容器的问题
方法2:在容器内创建.pypirc配置文件
如果偏好使用--repository参数指定仓库名称,可以先在容器内生成.pypirc文件,再执行上传:
步骤1:生成.pypirc配置
docker exec cppbuilder sh -c "cat > ~/.pypirc <<EOF [distutils] index-servers = gitlab-pypi [gitlab-pypi] repository = ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi username = gitlab-ci-token password = ${CI_JOB_TOKEN} EOF"
步骤2:执行Twine上传
docker exec cppbuilder python3 -m twine upload --repository gitlab-pypi /src_vol/build --verbose
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

