在 Travis CI 中构建 Python 项目失败,消息不明确
Posted
技术标签:
【中文标题】在 Travis CI 中构建 Python 项目失败,消息不明确【英文标题】:Failed build of Python project in Travis CI with unclear message 【发布时间】:2021-02-15 16:13:21 【问题描述】:我正在通过一个小型个人项目“通过实践”学习 Python(和一些库)。
我一直在使用 Minimal Product Viable 方法,然后我忽略了一些关于文件和目录组织的最佳实践。
此外,我利用这个机会学习了 pytest(我曾经使用 unittest 库进行测试)和Travis 的持续集成。
我创建了一个特定的branch 来测试和整合我在 travis 文件中的配置,但经过一些测试后我被阻止了。
有了这个配置
language: python
#python version
python: 3.8.6
#define dependencsy
install:
- pip install -r requirements.txt
# put testing framework
script: pytest
# allowed only these branch
branches:
only:
- master
- develop
- join-travis
我收到了这个error:
测试/test_NumberDays.py:61:
tests/numberdays.py:20:在 init
self.log = PersonalLogging() 测试/personalLogging.py:11:在 init
logging.config.fileConfig("config-log.ini", disable_existing_loggers=False)
/opt/python/3.8.6/lib/python3.8/logging/config.py:71:在文件配置中
格式化程序 = _create_formatters(cp) /opt/python/3.8.6/lib/python3.8/logging/config.py:104:在
_create_formatters
flist = cp["formatters"]["keys"]
self =
, key = '格式化程序' def getitem(self, key):
如果 key != self.default_section 而不是 self.has_section(key):
raise KeyError(key) E KeyError: 'formatters'
/opt/python/3.8.6/lib/python3.8/configparser.py:960: KeyError
_______________________ 设置 testRunningOK 时出错 _______________
@pytest.fixture
def temporalRange () :
我认为KeyError: 'formatters'的问题是:
logging.config.fileConfig("config-log.ini", disable_existing_loggers=False)
我创建了一个个人日志类(PersonalLogging),它封装了标准的logging类,ini配置文件在同一个目录下其他课程(我知道,这太可怕了,以后我会更正项目的结构:伙计们,不要以我为榜样,否则你的团队领导会在工作中解雇你^__^)。
现在我有两个问题:
-
如果我的假设是正确的,我该如何修复它并成功构建?
如果我的假设不正确,那么 (1) 正确的解释和 (2) 解决方案是什么?
提前致谢
【问题讨论】:
【参考方案1】:问题解决了。
出于我不记得的相同原因,我更改了文件名并在没有使用 pytest 测试项目的情况下推送。
然后,Travis 没有找到日志记录的配置文件。
在本地,运行项目后,我遇到了同样的错误(KeyError in formatters):问题是文件不可读
【讨论】:
以上是关于在 Travis CI 中构建 Python 项目失败,消息不明确的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Travis CI/Android SDK v20 上使用支持库构建
Swift 测试在本地通过,但在 Travis-CI 上构建失败
如何在 Travis CI 中为 C++ 项目并行运行多个构建,每个构建都有单独的脚本?