![](/img/trans.png)
[英]python can't find '__main__' module in '.py' in Azure Pipelines
[英]Azure DevOps can't find python module
我正在尝试使用 Azure DevOps 从 python 模块运行测试。 我已经建立了一个管道构建来构建一个 yml 文件。 我收到一个错误,我的导入中的模块名称不正确,但看起来模块名称没有在构建中设置?
当我在本地运行它时,它工作得很好。
模块 repo 文件结构:
api_check
api_check/auth
api_check/etc
api_check/__init__.py
我在我的 yml 文件中使用以下内容运行测试: - 脚本: | mkdir 日志 pytest -m 烟雾 --junitxml=logs/test-results.xml --ENV=prod displayName: '用 pytest 测试'
这一步出现以下错误:
2018-10-11T21:51:02.9825682Z _______________________ ERROR collecting test_search.py ________________________
2018-10-11T21:51:02.9826322Z ImportError while importing test module '/home/vsts/work/1/s/test_search.py'.
2018-10-11T21:51:02.9826804Z Hint: make sure your test modules/packages have valid Python names.
2018-10-11T21:51:02.9827123Z Traceback:
2018-10-11T21:51:02.9827411Z test_search.py:12: in <module>
2018-10-11T21:51:02.9827745Z from api_check.auth import get_Token_UsernamePassword
2018-10-11T21:51:02.9828644Z E ModuleNotFoundError: No module named 'api_check'
是否需要添加一些内容才能使构建识别模块 api_check? 我需要读入某种构建变量吗?
编辑以获取更多信息-
我正在从任何目录运行它,yml 文件从我的默认运行 - 基于调试日志,工作目录是/home/vsts/work/1/s
。 当我列出工作目录的内容时,我会看到我的模块的所有内容,我的 repo 中的所有内容都在api_check
下。
所以,而不是我对拉下回购的期望:
$workingDirectory/api_check
$workingDirectory/api_check/auth
$workingDirectory/api_check/etc
$workingDirectory/api_check/__init__.py
而是:
$workingDirectory
$workingDirectory/auth
$workingDirectory/etc
$workingDirectory/__init__.py
所以看起来只是添加父目录api_check
无济于事,因为似乎没有api_check
目录。 是否有一些设置我可以在管道源中翻转以使其包含顶级文件夹api_check
?
事实证明,Azure 扩展了 repo,以便 repo 中的最高级别目录成为工作目录,而不是在工作目录中。
为了解决我的问题,我将我的模块移到了我的 repo 中的二级目录。
例如,GitHub 存储库布局:
$repo/api_check
$repo/api_check/auth
$repo/api_check/etc
$repo/api_check/__init__.py
变成
$workingDirectory/api_check
$workingDirectory/api_check/auth
$workingDirectory/api_check/etc
$workingDirectory/api_check/__init__.py
可能有一种方法可以让 Azure 将 repo 扩展为工作目录中的子目录,但我还没有找到。
可以尝试删除根目录下的__init__.py
,应该可以解决问题。
您只需要使用以下命令执行测试:(使用 python -m)
python -m pytest -v test.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.