试图在ubuntu中的jenkins上运行python代码

试图在ubuntu中的jenkins上运行python代码,python,pandas,jenkins,anaconda,Python,Pandas,Jenkins,Anaconda,全部 我最近开始与Jenkins合作,试图用Jenkins管道取代cronjob。我对编程术语真的有点了解。我从stackoverflow的问题中学到了什么。所以,如果你们需要更多的信息,我会非常感谢你们使用简单的英语 因此,我安装了Jenkins的最新版本,并推荐了插件,以及我发现对python运行有用的所有插件 后来,我搜索了stackoverflow和其他网站来完成这项工作,但我所能做的就是 #!/usr/bin/env python from __future__ import pri

全部

我最近开始与Jenkins合作,试图用Jenkins管道取代cronjob。我对编程术语真的有点了解。我从stackoverflow的问题中学到了什么。所以,如果你们需要更多的信息,我会非常感谢你们使用简单的英语

因此,我安装了Jenkins的最新版本,并推荐了插件,以及我发现对python运行有用的所有插件

后来,我搜索了stackoverflow和其他网站来完成这项工作,但我所能做的就是

#!/usr/bin/env python

from __future__ import print_function

print('Hello World')
它成功了

目前,Jenkins正在Ubuntu 16.04上运行,我正在使用anaconda3的python(~/anaconda3/bin/python)

当我尝试运行稍微复杂一点的python代码时(我指的是导入熊猫),它会给我导入错误

到目前为止,我所尝试的是

  • 执行python脚本生成:导入-导入错误
  • 执行shell构建:导入熊猫(导入熊猫添加到上述代码中)
  • python builder生成:导入-无效解释器错误
  • 管道作业:sh python/path_to_python_file/*.py-导入错误
  • 所有人都犯了错误。既然“hello world”可以工作,我相信使用anaconda3的python不是问题。另外,它还很好地导入了print_函数,所以我想知道我应该从这里做什么。更改工作区设置?工作目录设置?代码更改

    谢谢

    既然“hello world”可以工作,我相信使用anaconda3的python不是问题

    你的假设是错误的

    有多种方法可以解决这个问题,但归根结底都是使用正确的python解释器。通常在ubuntu中,你至少会有两个解释器。一个用于Python2,一个用于python3,您将通过调用
    python pth/to/myScript.py
    python3 pth/to/myScript.py
    在shell中使用它们<在本例中,code>python和
    python3
    只是一种标签,使用环境变量
    PATH
    指向正确的可执行文件

    通过安装anaconda3,您将添加一个带有pandas和大量其他预装软件包的解释器。如果你想使用它,你需要告诉你的shell或Jenkins。如果
    import
    给您一个错误,那么您可能使用了不同的解释器或不同的python环境(但这超出了本文的范围)

    回到您的脚本

    在堆栈溢出回答之后,您将看到所有的行
    #/usr/bin/env-python
    的作用是确保在Ubuntu的环境路径上使用第一个python解释器。几乎可以肯定的是,这不是你用anaconda3安装的。它很可能是ubuntu发布的默认python 2。如果您想确定哪个解释器正在运行您的脚本,请不要将“Hello World”放在里面:

    #!/usr/bin/env python
    
    import sys
    
    print(sys.executable) # this line will give you the exact path to the interpreter
    print(sys.version)    # this one will give you the version
    
    好的,那怎么办?

    那么,使用正确的解释器运行脚本。删除
    #/usr/bin/env python
    从您的文件中删除,如果您有管道,请添加:

    sh "/home/yourname/anaconda3/bin/python /path_to_python_file/myFile.py"
    
    它极有可能解决这个问题。如果你想在不同的机器上使用这个python文件,你不需要在里面硬编码你的用户名,这也是非常灵活的

    既然“hello world”可以工作,我相信使用anaconda3的python不是问题

    你的假设是错误的

    有多种方法可以解决这个问题,但归根结底都是使用正确的python解释器。通常在ubuntu中,你至少会有两个解释器。一个用于Python2,一个用于python3,您将通过调用
    python pth/to/myScript.py
    python3 pth/to/myScript.py
    在shell中使用它们<在本例中,code>python和
    python3
    只是一种标签,使用环境变量
    PATH
    指向正确的可执行文件

    通过安装anaconda3,您将添加一个带有pandas和大量其他预装软件包的解释器。如果你想使用它,你需要告诉你的shell或Jenkins。如果
    import
    给您一个错误,那么您可能使用了不同的解释器或不同的python环境(但这超出了本文的范围)

    回到您的脚本

    在堆栈溢出回答之后,您将看到所有的行
    #/usr/bin/env-python
    的作用是确保在Ubuntu的环境路径上使用第一个python解释器。几乎可以肯定的是,这不是你用anaconda3安装的。它很可能是ubuntu发布的默认python 2。如果您想确定哪个解释器正在运行您的脚本,请不要将“Hello World”放在里面:

    #!/usr/bin/env python
    
    import sys
    
    print(sys.executable) # this line will give you the exact path to the interpreter
    print(sys.version)    # this one will give you the version
    
    好的,那怎么办?

    那么,使用正确的解释器运行脚本。删除
    #/usr/bin/env python
    从您的文件中删除,如果您有管道,请添加:

    sh "/home/yourname/anaconda3/bin/python /path_to_python_file/myFile.py"
    

    它极有可能解决这个问题。它还非常灵活,如果您想在其他机器上使用此python文件,就不会在其中硬编码用户名。

    谢谢!!这真的帮了我大忙!!为了便于将来参考,如果代码要在shell中执行,请删除sh。如果代码要在管道中执行,则sh之后的所有内容都应在“”中(引号)。谢谢!!这真的帮了我大忙!!为了便于将来参考,如果代码要在shell中执行,请删除sh。如果代码要在管道中执行,则sh之后的所有内容都应在“”中(引号)。