Azure DevOps Pipelines - Python - ModuleNotFoundError 尽管 sys.path.append() 或设置 PYTHONPATH

问题描述 投票:0回答:4

我正在尝试为我的 python 应用程序运行一些测试,但我无法正确设置路径,以便我的

test.py
可以找到它。

我的申请结构如下:

repo/src/main/python/main_module
repo/tests/test.py

我的

test.py
看起来像这样:

import sys

sys.path.append(os.path.normpath('C:/repo/src/main/python'))
import main_module

现在我想在 Azure Pipelines 中测试代码,所以首先我将存储库复制到位:

- powershell: |
    cd C:/
    mkdir repo
    cp -r -v $(src.repo)/* C:/repo/
  condition: eq( variables['Agent.OS'], 'Windows_NT' )

之后我使用

tree
来测试所有内容是否都已正确复制。

然后我只需通过调用运行测试脚本:

python C:/repo/tests/test.py

但这给了我一个

ModuleNotFoundError

我还尝试通过 PYTHONPATH 设置我的

main_module
的路径,但这也不起作用。

他们是我错过的东西还是 Azure Pipelines 中的错误?

python azure-devops pythonpath
4个回答
2
投票

与 Azure DevOps 支持人员交谈后,我现在知道我的问题目前是 DevOps-Pipelines 中的一个错误。

现在,我将在主模块旁边复制我的测试脚本,如果一切成功并且在构建应用程序之前删除它们。


0
投票

要在 Linux 环境中使用 Azure 管道执行 python 脚本,我使用了“script:”

script: pythonpath=/repo/src/main/python python3 repo/tests/test.py 
displayName: 'execute script python' 

0
投票

根据症状,我认为这是同一问题: Azure pipeline找不到用户创建的python模块

我已经通过以下解决方法解决了这个问题

在管道中包含一个脚本,将源代码移至新的 适当命名的目录,然后在那里进行测试。

有关完整详细信息和示例 YAML,请参阅我对其他问题的回答


0
投票

这在我的 Azure Pipeline 中用作 bash 脚本,假设

path/to/src
包含您的用户定义模块:

echo "##vso[task.setvariable variable=PYTHONPATH;]$PYTHONPATH:$(Build.Repository.LocalPath)/path/to/src"

请注意,新的

PYTHONPATH
直到执行后续步骤才可用。

© www.soinside.com 2019 - 2024. All rights reserved.