返回顶部
首页 > 资讯 > 后端开发 > Python >python插件 docker buil
  • 913
分享到

python插件 docker buil

插件pythonbuil 2023-01-31 02:01:49 913人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

     由于公司线上安全要求,不能直接使用pip安装,也没有自行部署pypi源,于是有了此篇文章。本文主要以etcd3插件为示例。     要求:         python插件需要附属在自己的软件包程序中,以os.path.appen

     由于公司线上安全要求,不能直接使用pip安装,也没有自行部署pypi源,于是有了此篇文章。本文主要以etcd3插件为示例。

     要求:

         python插件需要附属在自己的软件包程序中,以os.path.append的方式加载

     实现步骤:

     1、搜索找到etcd3的pthon插件

        A)通过找pypi插件界面:https://pypi.org/project/etcd3/并下载最新软件包

        B)  在pypi插件界面进入项目的homepage地址:Https://GitHub.com/kragniz/Python-etcd3

        C) 在homepage中找到关联插件包说明:https://github.com/kragniz/python-etcd3/blob/master/requirements.txt

             关联插件:grpcio>=1.2.0  tenacity==4.10.0   protobuf==3.5.2.post1

   

    2.1、搜索etcd3关联插件grpcio

       A)  下载相关包 https://pypi.org/project/grpcio/

       B)   进入homepage地址:https://grpc.io ,找到python相关:https://grpc.io/docs/quickstart/python.html,找到源码地址:https://github.com/grpc/grpc

      C)   在软件版本中找到关联插件包说明:https://github.com/grpc/grpc/blob/master/requirements.txt

             关联插件:coverage>=4.0 cython>=0.27 enum34>=1.0.4 protobuf>=3.5.0.post1 six>=1.10 wheel>=0.29


  2.2、搜索etcd3关联插件tenacity

   A) 下载相关包 https://pypi.org/project/tenacity/

   B) 进入homepage地址:https://github.com/jd/tenacity/

        C)关联插件包说明:https://github.com/jd/tenacity/blob/master/requirements.txt

              关联插件:six>=1.9.0 futures>=3.0;python_version=='2.7' monotonic>=0.6;python_version=='2.7'

 

  2.3、搜索etcd3关联插件protobuf


   A) 下载相关包 https://pypi.org/project/protobuf/

   B) 进入homepage地址https://developers.Google.com/protocol-buffers/ 找到源码地址:https://github.com/google/protobuf/tree/master/python

   C) 确认无关联插件


   3、 搜索grpcio、tenacity关联插件....至确认无相关关联

 

   4、安装时,软件安装时诸如grpcio插件,作者在写pypi插件时,有些必要的软件包会及时提示,直接下载过来安装即可;

     但有些依赖性错误找不到方向,跟自己写代码一样,总有些写好了依赖,在交付时运行代码不一定检查,所以有必要结合源码的关联插件信息,诸如:

 GCc: error: src/python/grpcio/grpc/_cython/cygrpc.c: No such file or directory

gcc: fatal error: no input files

compilation terminated.

creating tmp/tmpe125oS

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c /tmp/tmpe125oS/a.c -o tmp/tmpe125oS/a.o

Traceback (most recent call last):

  File "setup.py", line 310, in <module>

    cmdclass=COMMAND_CLASS,

  File "/usr/lib64/python2.7/distutils/core.py", line 152, in setup

    dist.run_commands()

  File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands

    self.run_command(cmd)

  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/usr/lib/python2.7/site-packages/setuptools/command/install.py", line 73, in run

    self.do_egg_install()

  File "/usr/lib/python2.7/site-packages/setuptools/command/install.py", line 93, in do_egg_install

    self.run_command('bdist_egg')

  File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command

    self.distribution.run_command(command)

  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py", line 185, in run

    cmd = self.call_command('install_lib', warn_dir=0)

  File "/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py", line 171, in call_command

    self.run_command(cmdname)

  File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command

    self.distribution.run_command(command)

  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/usr/lib/python2.7/site-packages/setuptools/command/install_lib.py", line 20, in run

    self.build()

  File "/usr/lib64/python2.7/distutils/command/install_lib.py", line 111, in build

    self.run_command('build_ext')

  File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command

    self.distribution.run_command(command)

  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/usr/lib/python2.7/site-packages/setuptools/command/build_ext.py", line 52, in run

    _build_ext.run(self)

  File "/usr/lib64/python2.7/distutils/command/build_ext.py", line 339, in run

    self.build_extensions()

  File "/tmp/grpcio-1.12.0/src/python/grpcio/commands.py", line 297, in build_extensions

    "Failed `build_ext` step:\n{}".fORMat(formatted_exception))

commands.CommandError: Failed `build_ext` step:

Traceback (most recent call last):

  File "/tmp/grpcio-1.12.0/src/python/grpcio/commands.py", line 292, in build_extensions

    build_ext.build_ext.build_extensions(self)

  File "/usr/lib64/python2.7/distutils/command/build_ext.py", line 448, in build_extensions

    self.build_extension(ext)

  File "/usr/lib/python2.7/site-packages/setuptools/command/build_ext.py", line 186, in build_extension

    _build_ext.build_extension(self,ext)

  File "/usr/lib64/python2.7/distutils/command/build_ext.py", line 498, in build_extension

    depends=ext.depends)

  File "/usr/lib64/python2.7/distutils/ccompiler.py", line 574, in compile

    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)

  File "/usr/lib64/python2.7/distutils/unixccompiler.py", line 132, in _compile

    raise CompileError, msg

CompileError: command 'gcc' failed with exit status 4

   

 5、由于是将python插件直接copy至软件目录再import的方式使用,期间遇到类似这样的问题:

无grpc类等模块问题

ImportError: No module named grpc   

将site-packages的grpcio-1.12.0-py2.7-linux-x86_64.egg文件拷贝至存放第三方包目录下后用unzip解压出来即可

   unzip  grpcio-1.12.0-py2.7-linux-x86_64.egg 会解压出grpc目录,sys.path.append('第三方目录'),import grpc -->help() -->grpc查看对应类方法等


有类,方法不存在问题

Traceback (most recent call last):

  File "test.py", line 25, in <module>

    import tuplesync

  File "/root/test/src/lcp/tuplesync.py", line 11, in <module>

    import link_master as lm

  File "/root/test/src/lcp/link_master.py", line 26, in <module>

    import etcd3

  File "/root/test/py_third/etcd3/__init__.py", line 3, in <module>

    import etcd3.etcdrpc as etcdrpc

  File "/root/test/py_third/etcd3/etcdrpc/__init__.py", line 1, in <module>

    from .rpc_pb2 import *

  File "/root/test/py_third/etcd3/etcdrpc/rpc_pb2.py", line 18, in <module>

    from etcd3.etcdrpc import auth_pb2 as auth__pb2

  File "/root/test/py_third/etcd3/etcdrpc/auth_pb2.py", line 217, in <module>

    import grpc

  File "/root/test/py_third/grpc/__init__.py", line 192, in <module>

    class ChannelConnectivity(enum.Enum):

  File "/root/test/py_third/grpc/__init__.py", line 203, in ChannelConnectivity

    IDLE = (_cygrpc.ConnectivityState.idle, 'idle')

AttributeError: 'module' object has no attribute 'ConnectivityState'


这个问题比较困惑,毕竟软件包等都是安装成功的而且也能看到相关方法,后经同事提醒他之前安装需要拷贝一个pkg_resources的目录,然后去查了查,这个目录是用来管理ptyon插件信息的,于是将编译机的pkg_resources.py也拷贝至第三方包目录运行软件后一切正常,这个pkg_resources.py文件是setuptools-39.1.0生成的。

     

    5、在试验中,都通过了验证后,将流程串联起来。

         平台发起打包命令Docker build  build-arg用于传递版本参数(区分打包版本),ftp密码(上传到对应内部yum源),ftp目录等(区分测试包、正式包)

         大概流程:

         角色:打包平台;jenkins任务;git代码仓库;特定打包机;yum源

         a、流水线平台界面操作,触发jenkins任务->拉取代码,执行特定脚本传递参数等

         b、jenkins任务在特定一台机上执行docker build,安装相关依赖,拉取内部代码,build成rpm包,上传到内部yum源

         在docker build的时候发现一个问题,纯手工操作,或者docker run个基础镜像后手动执行python插件安装一步步操作毫无问题;可是让自动build的grpcio总是提示CompileError: command 'gcc' failed with exit status 4,毫无头绪,后来先将grpcio相关依赖包很打了一个镜像B后,再执行安装grpcio插件也是如此;在镜像B的基础上验证测试无果后,随机重新安装了一次无相关的插件,再次执行安装grpcio就通过了;于是在docker build自动安装的过程中执行grpcio安装前,再执行一次其他插件的安装,这样编译就通过了,怀疑是插件未及时更新,但验证镜像B时所有的相关包都可以正常用python引用,神奇的问题。

   后记:

      本次自动安装python插件(先后顺序,dnspython重复)

      six-1.11.0

      setuptools-39.1.0

      dnspython-1.15.0

      ullib3-1.22

      pyDatalog-0.17.1

      pbr-4.0.3

      tenacity-4.12.0

      enum34-1.1.6

      monotonic-1.5

      futures-3.2.0

      protobuf-3.5.2

      dnspython-1.15.0

      grpcio-1.12.0

      etcd3-0.8.0


    


   


 

   

   




             

--结束END--

本文标题: python插件 docker buil

本文链接: https://lsjlt.com/news/186724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python插件 docker buil
         由于公司线上安全要求,不能直接使用pip安装,也没有自行部署pypi源,于是有了此篇文章。本文主要以etcd3插件为示例。     要求:         python插件需要附属在自己的软件包程序中,以os.path.appen...
    99+
    2023-01-31
    插件 python buil
  • IDEA如何使用Docker插件
    这篇文章主要介绍了IDEA如何使用Docker插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明之前docker的学习,包括镜像拉取,容器创建等操作都需要自己手动敲命令来...
    99+
    2023-06-20
  • Maven插件docker-maven-plugin的使用
    目录1、docker-maven-plugin 介绍2、环境、软件准备3、Demo 示例3.1 配置 DOCKER_HOST3.2 示例构建镜像3.3 执行命令3.4 绑定Docke...
    99+
    2024-04-02
  • Python插件:Python Director
    原文来自:https://www.oschina.net/p/python+director前言Director 是一个Python的类库用来开发命令行工具的插件,利用它可以很方便的添加新的功能。下面是一个简单的例子:...
    99+
    2023-06-02
  • IDEA使用Docker插件(菜鸟教程)
    目录说明一、开启Docker远程访问二、连接docker三、镜像的拉取四、容器的创建与运行五、docker一键部署springboot项目可能的错误:说明 之前docker的学习,包...
    99+
    2024-04-02
  • docker中网络插件flannel怎么用
    这篇文章主要为大家展示了“docker中网络插件flannel怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“docker中网络插件flannel怎么用”这篇文章吧。  ...
    99+
    2023-06-04
  • 解决vscode docker插件docker.socket权限问题
    解决办法, 将系统中(如果使用了remote-ssh, 则为远程服务器)所有的.vscode相关进程kill 这些进程都是在 .vscode 文件夹下, 因此可以直接搜索.vsco...
    99+
    2024-04-02
  • 怎么使用docker安装elasticsearch和head插件
    本文小编为大家详细介绍“怎么使用docker安装elasticsearch和head插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用docker安装elasticsearch和head插件”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-30
  • docker-compose安装RabbitMQ及插件操作步骤
    目录准备工作docker-compose脚本操作步骤执行命令进入容器内,启动我们刚刚添加的插件查看插件是否有安装成功优化搭建步骤目的思路步骤准备工作 RabbitMQ默认不带延迟队...
    99+
    2023-01-12
    docker-compose安装RabbitMQ docker compose
  • vscode安装python插件
    笔记内容:vscode安装python插件 笔记日期:2017-12-23 <br> vscode创建python文件 在介绍如何安装python插件之前,先来看看没有插件的情况下,是否能够在vscode中编辑和执行pytho...
    99+
    2023-01-31
    插件 vscode python
  • notepad++安装python插件
    (1)如果无法更新,请用国外***进行连接###还要装一个插件##还要装一个创建插件→XBrackets Lite→Settings 勾选Autocomplete Brackets 就可以了。notepade++的自动注释为:ctrl+Q...
    99+
    2023-01-31
    插件 notepad python
  • Docker安装RabbitMQ并安装延时队列插件
    目录一、RabbitMQ简介二、docker安装RabbitMQ1、搜索镜像2、拉取并运行容器3、访问 http://192.168.50.128:15672 三...
    99+
    2024-04-02
  • IDEA如何通过Docker插件部署SpringBoot项目
    这篇文章主要介绍了IDEA如何通过Docker插件部署SpringBoot项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、配置Docker远程连接端口找到并编辑服务器上...
    99+
    2023-06-21
  • python安装各种插件
    在python中安装numpy、scipy等时,如果使用的python是3或者是64位,有时候会遇到各种问题,这里对高版本的python和64位都有很好的支持:传送门 下载完.whl包后,python3中已经自带了pip,所以可以...
    99+
    2023-01-31
    插件 python
  • 用python编写maya插件
    1. python的安装 在Eclipse中安装pydev环境,pydev更新地址为:  http://pydev.org/updates 2. 配置python环境: 打开Eclipse菜单Window/Preferences,在PyD...
    99+
    2023-01-31
    插件 python maya
  • maven实现docker自动化部署插件的使用
    构建开发项目 首先打开我们的IDEA构建一个我们的开发项目,配置如下: 接着打开我们的pom.xml修改build的配置,修改以后的代码如下: <build> ...
    99+
    2024-04-02
  • IntelliJ IDEA(2018版)安装docker插件的详细过程
    目录一、开发环境二、安装docker插件1、Idea内安装2、下载安装包安装三、Spring Boot 服务docker部署1、新建一个Spring Boot工程2、配置Docker...
    99+
    2024-04-02
  • docker安装RabbitMQ及安装延迟插件的方法
    今天小编给大家分享一下docker安装RabbitMQ及安装延迟插件的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。我这...
    99+
    2023-06-30
  • python中Pytest常用的插件
    目录前言1. 用例依赖2. 失败重跑3. 指定用例执行顺序4. 分布式运行5. 多重断言6. 小结前言 除了框架本身提供的功能外,Pytest还支持上百种第三方插件,良好的扩展性可以...
    99+
    2024-04-02
  • python插件怎么配置化
    这篇文章主要介绍python插件怎么配置化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作