gpt4 book ai didi

Python 导入在 travisCI 上失败但在本地失败

转载 作者:太空狗 更新时间:2023-10-29 18:32:25 26 4
gpt4 key购买 nike

我正在尝试将 TravisCI 集成到我的工作流程中,并意识到由于我的旧目录结构(没有独立的、virtualenv-able git repos),我有一些依赖关系。

当我尝试在本地运行 nosetests 时,它运行测试很好;当 TravisCI 尝试运行它们时,它会失败,并出现 import 错误。具体来说,我有,作为我的测试脚本中的一行:

from myproject import something

我的目录结构在我的 git 仓库中 myproject 是这样的:

.travis.yml
requirements.txt
something.py
tests/
test_something.py
  • 我曾尝试让它在本地失败(因为那时我可能会理解 TravisCI 问题),但无法完成。
  • 我试过使用常规 python 运行,并使用将 nose 添加到其 requirements.txt 的 virtualenv,并且测试始终在本地通过。

我觉得我仍然不了解绝对导入与相对导入,我无法判断这是在这里发挥作用,还是我只是在我的项目中做一些明显而愚蠢的事情。

期望的结果:找出 TravisCI 失败的原因,并相应地修复我的存储库,这样我就可以在本地和 TravisCI 上提交并正确构建东西。如果这需要更剧烈的改变,比如“你应该有一个对环境做废话的 setup.py”或类似的 - 请告诉我。我是 Python 这方面的新手,发现当前文档非常不清楚。

仅供引用,我找到了 this question并添加 --exe 没有帮助,或者似乎是同一个问题。

最佳答案

我看到没有答案,我遇到了同样的问题,所以我在这里发帖希望能帮助别人:

解决方案一

我的快速修复是在 .travis.yml 中添加此行 export PYTHONPATH=$PYTHONPATH:$(pwd):

before_install:
- "pip install -U pip"
- "export PYTHONPATH=$PYTHONPATH:$(pwd)"

解决方案2

有一个 setup.py 应该是默认选项,因为它是最优雅的,配置如下:

from setuptools import setup, find_packages

setup(name='MyPythonProject',
version='0.0.1',
description='What it does',
author='',
author_email='',
url='',
packages=find_packages(),
)

然后在.travis.yml中加入这一行

before_install:
- "pip install -U pip"
- "python setup.py install"

解决方案 3:

更改项目的布局,使测试文件夹位于应用程序一(具有核心 python 代码的那个)下,例如:

.travis.yml
requirements.txt
app
|_ tests
| |_ test_application.py
|_ application.py

并在 travis 中运行测试,覆盖率和 nosetest 如下:

script:
- "nosetests --with-coverage --cover-package app"

关于Python 导入在 travisCI 上失败但在本地失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35972415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com