我正在 Azure Devops 中运行一个管道,该管道应该使用“twine”发布一个轮子。该管道使用基于 Windows 的映像。
我尝试过使用和不使用虚拟环境并直接调用 twine,但也使用
python -m
还使用
python3
而不是
python
进行了测试,但没有运气。
我总是以错误结束
C:\__t\Python\3.9.13\x64\python.exe: No module named twine
以下步骤:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
disableDownloadFromRegistry: true
addToPath: true
architecture: 'x64'
displayName: 'Use Python $(python.version)'
- script: |
python -m pip install --user --upgrade pip setuptools wheel twine
python -m venv myenv
myenv/Scripts/activate
displayName: 'Install Python Prerequesites'
- script: |
python setup.py bdist_wheel
displayName: 'Build wheel'
- task: TwineAuthenticate@1
inputs:
artifactFeed: 'MyProject/MyFeed'
displayName: 'Twine Authenticate'
- script: |
# Also tried python -m twine...
twine upload --repository-url https://pkgs.dev.azure.com/myorg/myproject/_packaging/myfeed/pypi/upload/ dist/*.whl
displayName: 'Upload to feed'
这个问题的原因是,即使在虚拟环境中安装了
twine
,也尝试在虚拟环境外运行它。
以下是解决此问题的步骤以及对的代码的一些解释:
已修正的代码:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
disableDownloadFromRegistry: true
addToPath: true
architecture: 'x64'
displayName: 'Use Python $(python.version)'
- script: |
python -m pip install --upgrade pip setuptools wheel twine
python -m venv myenv
myenv/Scripts/activate
pip install -r requirements.txt # 如果有 requirements.txt,则在此处安装依赖项
displayName: 'Install Python Prerequesites'
- script: |
python setup.py bdist_wheel
displayName: 'Build wheel'
- task: TwineAuthenticate@1
inputs:
artifactFeed: 'MyProject/MyFeed'
displayName: 'Twine Authenticate'
- script: |
python -m twine upload --repository-url https://pkgs.dev.azure.com/myorg/myproject/_packaging/myfeed/pypi/upload/ dist/*.whl
displayName: 'Upload to feed'
workingDirectory: $(System.DefaultWorkingDirectory) # 可选:确保位于正确的目录中
说明:
-
虚拟环境激活:
确保在安装
twine
之后 立即激活虚拟环境 (myenv/Scripts/activate
)。这可确保twine
安装在虚拟环境中,并且可以在后续步骤中访问。 -
在虚拟环境中运行
twine
: 不需要直接调用twine
。请在Upload to feed
步骤中使用python -m twine ...
。这将使用虚拟环境中的 Python 解释器来运行twine
模块。 -
requirements.txt(可选):
如果的项目有
requirements.txt
文件,请在安装twine
后,在虚拟环境激活的步骤中添加pip install -r requirements.txt
。这将确保所有必要的依赖项都安装在虚拟环境中。 -
工作目录(可选):
workingDirectory
参数(在Upload to feed
步骤中)是可选的。如果不确定脚本在哪个目录中运行,可以使用它来指定工作目录。
其他提示:
- 确保的 Azure DevOps 代理具有构建 Python 包所需的工具和依赖项。
-
可以使用
print(sys.executable)
和print(sys.path)
来检查的脚本正在使用哪个 Python 解释器和哪些搜索路径。 -
如果仍然遇到问题,请尝试在每个步骤中添加
echo $PATH
以查看环境变量,并确保虚拟环境的路径包含在其中。
通过进行这些更改,应该能够在 Azure DevOps 管道中成功使用
twine
将的 Python 包上传到 Azure Artifacts。