python打包linux应用 - CSDN
精华内容
参与话题
  • python打包运行在Linux

    千次阅读 2019-10-09 17:01:19
    工具在window下可以打为exe,在Linux下可以打为执行程序 # 安装PyInstaller: pip install pyinstaller # 进入程序目录,用以下命令执行你的python文件 # 会生成dist目录 pyinstaller yourprogram.py # 进入dist下...

    1、借助工具PyInstaller

    工具在window下可以打为exe,在Linux下可以打为执行程序

    # 安装PyInstaller:
    pip install pyinstaller
    # 进入程序目录,用以下命令执行你的python文件
    # 会生成dist目录
    pyinstaller yourprogram.py
    # 进入dist下yourprogram目录,运行
    ./yourprogram
    
    展开全文
  • 使python应用程序可安装在基于Debian的操作系统(例如Debian或Elementary OS )上的一种方法是使用dh_virtualenv工具。 它构建了一个.deb软件包,该软件包将Python虚拟环境包装在应用程序周围,并在安装时进行部署。...

    使python应用程序可安装在基于Debian的操作系统(例如Debian或Elementary OS )上的一种方法是使用dh_virtualenv工具。 它构建了一个.deb软件包,该软件包将Python虚拟环境包装在应用程序周围,并在安装时进行部署。

    在本文中,我将以构建包含HTTPie工具的程序包为例来说明如何使用它,以从命令行测试HTTP API,而无需激活虚拟环境。

    用dh_virtualenv包装

    首先,您需要安装dh_virtualenv所需的工具。 dh_virtualenv的文档提供了所有安装选项。 在基于Debian的系统上,我输入:

     apt-get install dh-virtualenv devscripts 
    

    尽管不需要devscripts软件包,但它将简化后续操作。

    现在,创建一个目录来保留源。 由于这是HTTPie的本地,非官方打包,因此我将其称为myhttp 接下来,让我们在myhttp内创建一些文件,以向Debian构建系统提供元数据。

    首先,创建debian / control文件:

    Source: myhttp
    Section: python
    Priority: extra
    Maintainer: Jan Doe <jandoe@example.org>
    Build-Depends: debhelper (>= 9), python3.7, dh-virtualenv (>= 0.8)
    Standards-Version: 3.9.5

    Package: myhttp
    Architecture: any
    Pre-Depends: dpkg (>= 1.16.1), python3.7, ${misc:Pre-Depends}
    Depends: ${misc:Depends}
    Description: http client
     Useful for doing stuff

    那么所有这些信息是关于什么的呢? 正如Debian文档所述

    “第1-7行是源程序包的控制信息。第9-13行是二进制程序包的控制信息。”

    这是我的看法:

    • 在我们的案例中, section值大部分没有意义,但必须存在。 将信息提供给引导式UI安装程序很有意义,而该信息与该软件包无关。
    • 额外的“ 优先级”值是此类第三方套餐的正确优先级。
    • 强烈建议在“ 维护者”字段中输入真实的联系方式。 但是,它不必一定是您的个人电子邮件-例如,“ Infrastructure Team < infra-team-list@company.example.com >”,如果该软件包是由团队维护的,并且您希望解决该问题,被发送到团队的邮件别名。
    • build-depends字段指示您需要debhelper,python和dh-virtualenv来构建软件包:软件包构建过程将确保在软件包构建时安装了这些依赖项。
    • 标准版本主要供人类使用。 它指示您正在遵循的指南。 本指南基于dh-virtualenv的官方文档,该文档基于Debian的3.9.5指南。 将二进制包和源包命名为相同名称几乎总是最佳选择。
    • 架构”字段应为“ 任意”,因为虚拟环境可能包含一些特定于架构的文件;否则,最好将其选为全部
    • 保持pre-depends列表不变:pre-depends是一种非常严格的依赖关系形式,很少有您需要的内容超出此处建议的最低要求。 依赖关系通常由构建系统准确计算,因此没有理由手动指定它们。
    • 如果您的软件包主要供内部使用,则说明可能只指定最少的信息和指向公司Wiki的链接。 否则,更多细节可能会有用。

    然后创建debian / compat文件,该文件主要出于历史目的存在

     $  echo "9" > debian / compat 
    

    接下来,创建更改日志以告知软件包用户自上一发行版以来发生了什么变化。 最简单的方法是使用dch --create创建模板,然后填写值。

    填写后,看起来像:

    myhttp (2.0.0-1) stable; urgency=medium

      * Initial release.

     -- Jan Doe <jandoe@example.org>  Fri, 27 Mar 2020 01:09:22 +0000

    现在您需要告诉该工具安装HTTPie,但是哪个版本?

    在版本宽松的文件中创建一个requirements.in文件:

     httpie 
    

    通常,宽松的需求文件将仅包含项目的直接依赖项,并在需要时指定最低版本。 不一定总是需要指定最低版本:这些工具通常偏向于将依赖关系严格化为“可能的最新版本”。 如果您的Debian软件包与一个内部Python软件包相对应,这是内部应用程序中的一种常见情况,则松散的需求文件看起来将很相似:软件包名称仅一行。

    然后使用pip-compile (可通过安装PyPI软件包pip-tools获得 ):

     $  pip-compile requirements.in > requirements.txt 
    

    这将产生一个严格的依赖文件,称为requirements.txt

    #
    # This file is autogenerated by pip-compile
    # To update, run:
    #
    #    pip-compile requirements.in
    #
    certifi==2019.11.28       # via requests
    chardet==3.0.4            # via requests
    httpie==2.0.0             # via -r requirements.in
    idna==2.9                 # via requests
    pygments==2.6.1           # via httpie
    requests==2.23.0          # via httpie
    urllib3==1.25.8           # via requests

    最后,编写一个debian / rules文件来创建软件包。 由于dh_virtualenv做了所有艰苦的工作,所以rules文件很简单:

    #!/usr/bin/make -f

    %:
            dh $@ --with python-virtualenv --python /usr/bin/python3.7

    确保指定Python解释器。 默认情况下,它将在/ usr / bin / python中使用解释器,该解释器为Python 2,但是您应该使用受支持的Python版本

    写作结束了。 剩下的就是构建软件包:

     $  debuild -b -us -uc  
    myhttp_2.0.0-1_amd64.deb 该文件可以安装在任何兼容的操作系统上。

    通常,最好在同一平台上构建用于特定平台(例如Debian 10.0)的Debian软件包。

    您可以将此Debian软件包存储在存储库中,并使用例如Ansible将其安装在所有相关系统上。

    结论

    基于Debian的操作系统的打包应用程序是一个多步骤的过程。 使用dh_virtualenv将使过程变得简单。

    翻译自: https://opensource.com/article/20/4/package-python-applications-linux

    展开全文
  • 了解如何使用 dh_virtualenv 来让你的 Python 应用可作为 .deb 包安装。https://linux.cn/article-12143-1.html作者:Mosh...

     

    了解如何使用 dh_virtualenv 来让你的 Python 应用可作为 .deb 包安装。

    https://linux.cn/article-12143-1.html
    作者:Moshe Zadka
    译者:geekpi

    在基于 Debian 的操作系统(例如 Debian 或 Elementary OS)上安装 Python 应用的一种方法是使用 dh_virtualenv 工具。它可以构建一个 .deb 包,在应用之外封装了一个 Python 虚拟环境,并在安装时进行部署。

    在本文中,我将以构建一个包含 HTTPie 工具的包为例来解释如何使用它,以便在无需激活虚拟环境的情况下从命令行测试 HTTP API。

    使用 dh_virtualenv 打包

    首先,你需要安装 dh_virtualenv 所需的工具。dh_virtualenv 的文档提供了所有安装选项。在基于 Debian 的系统上,我输入:

    apt-get install dh-virtualenv devscripts
    

    尽管不需要 devscripts 包,但它可以简化后续操作。

    现在,创建一个目录来保存源码。由于这是一个本地的、非官方的 HTTPie 打包,因此我将其称为 myhttp。接下来,让我们在 myhttp 内创建一些文件,向 Debian 构建系统提供元数据。

    首先,创建 debian/control 文件:

    Source: myhttp
    Section: python
    Priority: extra
    Maintainer: Jan Doe <jandoe@example.org>
    Build-Depends: debhelper (>= 9), python3.7, dh-virtualenv (>= 0.8)
    Standards-Version: 3.9.5
    
    Package: myhttp
    Architecture: any
    Pre-Depends: dpkg (>= 1.16.1), python3.7, ${misc:Pre-Depends}
    Depends: ${misc:Depends}
    Description: http client
     Useful for doing stuff
    

    那么这些是什么信息呢?正如 Debian 文档指出的:

    “第 1–7 行是源码包的控制信息。第 9–13 行是二进制包的控制信息。”

    以下是我使用的:

    ◈ Section 的值对于我们来说大多没有意义,但需要存在。它对给引导式 UI 安装程序提供信息是有意义的,但对于这个包来说,没有意义。

    ◈ Priority 对像这样的第三方包的正确值是 extra

    ◈ 强烈建议在 Maintainer 字段中填写正确的联系人信息。但不一定非得是你的个人电子邮件,如果包由团队维护,并且你希望将问题发送到团队的邮件别名,例如 Infrastructure Team <infra-team-list@company.example.com>

    ◈ Build-Depends 字段标识你需要 debhelperpython 和 dh-virtualenv 来构建包:包构建过程中将确保这些依赖项在包构建时已安装。

    ◈ Standards-Version 字段主要给人看。它表明你遵循的指南。本指南基于 dh-virtualenv 的官方文档,它是基于 Debian 的 3.9.5 指南。最好一直将源码包和二进制包命名相同。

    ◈ Architecture 字段应为 Any,因为除非虚拟环境可能包含一些特定于体系结构的文件。否则,最好选择该字段为 any

    ◈ 保持 Pre-Depends 列表不变:它是一种非常严格的依赖关系形式,你很少会需要比这里建议的最小依赖更多的依赖项。依赖项通常由构建系统准确计算,因此没有理由手动指定它们。

    ◈ 如果你的包主要用于内部,那么 Description 字段可能只需要最少的信息或者指向公司 wiki 的链接,不然更多的信息会更有用。

    然后创建 debian/compat 文件,它主要出于历史目的而存在:

    $ echo "9" > debian/compat
    

    接下来,创建更新日志以告知包用户自上次发布以来发生了什么变化。最简单的方法是使用 dch --create 创建模板,然后填写值。

    填写后,它看起来像:

    myhttp (2.0.0-1) stable; urgency=medium
    
      * Initial release.
    
     -- Jan Doe <jandoe@example.org>  Fri, 27 Mar 2020 01:09:22 +0000
    

    现在你需要告诉工具安装 HTTPie,但是哪个版本?

    创建一个宽松版本的 requirements.in 文件:

    httpie
    

    通常,宽松的需求文件将仅包含项目的直接依赖项,并在需要时指定最低版本。不一定总是需要指定最低版本:这些工具通常偏向于将依赖关系转化为“可能的最新版本”。如果你的 Debian 包与一个内部 Python 包相对应,这是内部应用中的一种常见情况,那么宽松的需求文件看起来将很相似:仅包含包名的一行。

    然后使用 pip-compile(可通过安装 PyPI 包 pip-tools 获得):

    $ pip-compile requirements.in > requirements.txt
    

    这会生成一个严格的依赖文件,名为 requirements.txt

    #
    # This file is autogenerated by pip-compile
    # To update, run:
    #
    #    pip-compile requirements.in
    #
    certifi==2019.11.28       # via requests
    chardet==3.0.4            # via requests
    httpie==2.0.0             # via -r requirements.in
    idna==2.9                 # via requests
    pygments==2.6.1           # via httpie
    requests==2.23.0          # via httpie
    urllib3==1.25.8           # via requests
    

    最后,写一个 debian/rules 文件来创建包。因为 dh_virtualenv 会处理所有困难的事,因此规则文件很简单:

    #!/usr/bin/make -f
    
    %:
            dh $@ --with python-virtualenv --python /usr/bin/python3.7
    

    确保指定 Python 解释器。默认它会使用 /usr/bin/python,这是 Python2,但是你应该使用一个受支持的 Python 版本。

    完成了,接下来就是构建包:

    $ debuild -b -us -uc
    

    这会在父目录生成一个类似 myhttp_2.0.0-1_amd64.deb 的文件。该文件可在任何兼容的系统上安装。

    通常,最好在同一平台上构建用于特定平台(例如 Debian 10.0)的 Debian 包。

    你可以将此 Debian 包保存在软件仓库中,并使用例如 Ansible 的工具将其安装在所有相关系统上。

    总结

    给基于 Debian 的系统的打包应用是一个有着多个步骤的过程。使用 dh_virtualenv 将使过程变得简单明了。


    via: https://opensource.com/article/20/4/package-python-applications-linux

    作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    展开全文
  • Python是解释性语言,我们如何将普通的Python项目(含有依赖,redis)打包成可运行的一个文件(实际为文件夹吧)。下面描述一个基本流程,供大家参考。以下流程是我们实际线上REDIS数据修改的一个需求,可以简单的...

    Python是解释性语言,我们如何将普通的Python项目(含有依赖,redis)打包成可运行的一个文件(实际为文件夹吧)。下面描述一个基本流程,供大家参考。以下流程是我们实际线上REDIS数据修改的一个需求,可以简单的理解为将数据A改为B,项目地址可见https://github.com/antianchi/data_process_20190429.git

    1. 整个项目结构描述:
      我项目的包只有util、process,main.py为入口文件。其余文件夹为打包而服务。
    2. 创建setup.py文件:
      #coding=utf-8
      from distutils.core import setup
      setup(
          name='data_process',
          version='4.0',
          author='安天池',
          author_email='861710865@qq.com',
          maintainer='安天池',
          maintainer_email='xxx@qq.com',
          url='www.eastcom.com',
          packages=["","process","util"]
      )

       

    3. 在terminal中执行命令:pip freeze > requirements.txt 。生成当前项目的依赖配置文件,此文件中的内容包含了整个项目的依赖,我们只需要保留非系统的依赖即可,例如我的项目依赖了REDIS,requirements.txt 文件内容如下:
      configparser==3.5.0
      croniter==0.3.25
      redis==3.2.1

       

    4. 使用命令>pip download -d packages/ -r requirements.txt 将系统外的依赖下载到packages目录,执行完毕目录如下:
    5. 执行打包命令python setup.py sdist,执行完毕后,生成的文件所在位置。忘记描述,所有的命令执行,直接在Pycharm的terminal中执行即可,免得打开命令提示符。
    6. 将生成的data_process-4.0.zip拷贝到文件系统,然后解压,将packages,requirements.txt 放入解压后的文件夹,此文件夹内容如下:
    7. 执行项目,由于我的电脑已经将redis的额外依赖安装了,是可以直接执行python main.py的,否则将会报错,说缺少redis,那么此时,你就需要在当前文件夹下执行命令:pip install --no-index --find-links=packages/ -r requirements.txt将依赖安装到系统。
    8. 若你的系统缺少pip命令,那么你需要去下载pip-19.1.tar.gz,下载地址https://pypi.org/project/pip/#files此处找到,此tar文件针对linux;若你是在WIn上,可以执行python get-pip.py,安装pip,此文件的下载也在刚才的地址,演示就不提供了。


       
    展开全文
  • 要在n多服务器端部署python应用,虽然python本身是跨平台的,当时好多第三方的扩展却不一定都能做到各个版本兼容,即便是都是linux,在redhat系列和ubuntu系列之间来回导也是个很让人头痛的事.  找到这个...
  • 通过Kivy将Python文件打包成apk

    万次阅读 多人点赞 2018-01-29 10:31:22
    是一个开源的 Python 框架,用于快速开发应用,实现各种当前 流行的用户界面,比如多点触摸等等。且Kivy 可以运行于 Windows, Linux, MacOS, Android, iOS 等当前绝大部分主流桌面/移动端操作系统。 周日...
  • python封装成exe

    万次阅读 多人点赞 2020-08-07 14:19:55
    最近写了一个小小的程序,需要进行封装exe,为了简单,就...首先,需要安装一下pip这个应用,这个已经在前面的文章中说过了,windows和linux都有请借鉴windows和linux。 第二步,安装好pip之后,在cmd命令窗口中输...
  • python项目打包成docker镜像并发布

    万次阅读 2020-08-24 10:17:16
    基础镜像:镜像中运行的项目或者启动的一些服务,都要在一个基础镜像之上才能运行这些服务,比如一个django项目或者mysql数据库等,都要在Linux操作系统之上来运行,所以打包我们自己的项目时,必须要有个基础镜像来...
  • Ø 可以将Python脚本打包成可执行程序,在没有Python环境的机器上运行。 Ø 可以在以下环境中执行: Windows (32-bit and 64-bit), Linux (32-bit and 64-bit), Mac OS X (32-bit and 64-bit), ...
  • 通过cpython把python的文件转换为二进制文件,达到代码保护的目的参考文档 http://docs.cython.org/en/latest/1、下载Cython-0.28.2.tar.gz python setup.py install安装2、创建你需要打包成二进制的python文件 ...
  • Python程序打包成exe可执行文件

    万次阅读 多人点赞 2017-08-02 16:04:20
    Python程序打包工具 Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的...
  • 如何打包发布加密的 Python 源代码

    千次阅读 2020-05-29 12:03:07
    Python 代码写好之后,如果客户的电脑没有装 Python,一般会打包成为可执行文件,常用的工具有 py2exe (支持 Windows) py2app (MacOS 的 py2exe) cx_Freeze (跨平台) PyInstaller(跨平台) 但是这些...
  • ubuntu下让python脚本可直接运行

    万次阅读 2017-11-11 10:42:27
    我们还是以那个翻译程序为例子,上次给各位老铁讲了在windows下的应用程序打包,这一次给各位老铁讲一讲,在linux下为python文件可以自己执行,从而不需要python xxx.py。很简单,在python源文件最上面添上下面一句...
  • Windows下Python程序打包小结

    千次阅读 2014-04-01 20:19:10
    这还是之前的文章,最近发现...跨平台桌面应用,可以选择MONO,还可以用Boost C++导入Python程序,这比直接打包Python方便,像GUIMiner应该就是: 记下吧,也会用得上: Windows不像Linux,没有默认安装Python环境
  • 手把手教你将Python程序打包为DLL

    万次阅读 热门讨论 2019-05-30 18:44:44
    手把手教你将Python程序打包为DLL Python的数据类型和C的数据类型貌似是有某种“一一对应”的关系的,此外,由于Python(确切的说是CPython)本身是由C语言实现的,故Python数据类型之间的函数运算也必然与C语言有...
  • Python开发者必备6个基本库

    千次阅读 2017-10-19 15:43:11
    译者注:无论你是想快速入手Python还是想为Python应用程序构建本地UI,亦或者对Python代码进行优化,本文列举的6个库,都有可能会帮到你。 由于具有易于使用的优势,Python在各个行业和学科中都有着广泛的应用
  • [272]如何把Python脚本导出为exe程序

    万次阅读 多人点赞 2019-12-14 15:10:43
    pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行 最新版是pyinstaller 3.1.1。支持python2.7和python3.3+。 可运行在Windows,Mac和Linux操作系统下。 但它不是跨编译的,也就是说在...
  • kivy 前言

    万次阅读 2020-07-31 16:34:44
    Kivy是一个很优秀的,基于Python的GUI库,可以利用Python快速编程的特点,快速的编写windows, linux, mac, android, ios等主流平台的应用程序。同wxPython、PyQt相比,最大的优点是可以快速地编写移动应用程序 2....
  • Python打包exe文件方法汇总【4种】

    万次阅读 多人点赞 2018-10-21 22:15:11
    title: Python打包exe文件方法 copyright: true top: 0 date: 2018-08-11 21:08:21 tags: 打包 categories: Python进阶笔记 permalink: password: keywords: description: 使用py2exe,pyinstaller,cx_Freeze,...
  • python开发app实战

    千次阅读 多人点赞 2020-06-13 21:41:28
     利用python开发app需要用到python的一个模块Kivy,kivy是一个开源的,跨平台的Python开发框架,用于开发使用创新的应用程序。简而言之,这是一个python桌面程序开发框架(类似wxpython等模块),强大的是kivy支持...
1 2 3 4 5 ... 20
收藏数 21,748
精华内容 8,699
关键字:

python打包linux应用