python程序打包成linux_python 打包成linux程序 - CSDN
精华内容
参与话题
  • linux程序打包 使用的是pyinstaller 打开终端 sudo pip pyinstaller 报错 是pip出现的bug sudo vi /usr/bin/pip 最后三行改成下所示 from pip import main if name == ‘main’: sys.exit(main._main()) 输入:wq ...

    linux程序打包
    使用的是pyinstaller
    打开终端
    sudo pip pyinstaller
    报错
    是pip出现的bug
    sudo vi /usr/bin/pip
    最后三行改成下所示
    from pip import main
    if name == ‘main’:
    sys.exit(main._main())
    输入:wq
    保存退出
    再运行sudo pip pyinstaller
    安装成功
    pyinstaller --version
    进行验证
    pyinstaller就此安装成功

    展开全文
  • Python开发 之 Python3打包(windows/linux)详解

    万次阅读 多人点赞 2020-04-13 09:17:52
    文章目录1、唠唠叨叨2、背景3、Python打包工具3.1、py2exe3.2、cx_Freeze3.3、PyInstaller4、Windows打包4.1、单个文件打包4.1.1、核心源码4.1.2、程序运行4.1.3、打包4.1.4、打包后效果4.2、多个文件打包4.2.1、...

    1、唠唠叨叨

    最近项目中需要Python的打包,看到网上也没有很详细的资料,于是做了一些示例程序。小小的研究了一下,Python如何在Windows和Linux上打包,并把程序源码以及各个记录上传到Github上与大家分享。

    2、背景

    Python版本:3.6.8
    Windows版本:Windows 10 家庭中文版 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202)
    Linux版本:centos7.4

    3、Python打包工具

    今天没时间研究cx_Freeze,先研究了一下PyInstaller。

    3.1、py2exe

    py2exe是一个将python转换成windows上的可独立执行的可执行程序(*.exe)的工具。不过,该可执行程序,只能在相同的Windows系统下运行,而且不适合Linux。果断被我舍弃不在研究了。

    3.2、cx_Freeze

    cx_Freeze 是一个类似 py2exe 的工具,但 cx_Freeze 可以在 linux 下可以直接执行的 ELF 格式的二进制可执行文件,也可以在windows上执行。
    cx_Freeze的作用可以让python程序可以脱离python运行环境,在没有安装python的微型linux系统(例如cdlinux、tinycore等)里,方便地运行你的python程序。

    程序简介:https://pypi.org/project/cx-Freeze/5.0/

    3.3、PyInstaller

    号称是目前最全面的打包程序,然后我看了一下程序更新时间。一看是10天前,嗯,不错,就它了。
    程序简介:https://pypi.org/project/PyInstaller/

    看了一下参数介绍如下:
    在这里插入图片描述

    4、Windows打包

    4.1、单个文件打包

    4.1.1、核心源码

    #! -*- coding: utf-8 -*-
    """
    Author: ZhenYuSha
    Create Time: 2020-1-20
    Info:  Python打包示例1,单个文件打包
        “pyinstaller -F(单个可执行文件) 程序源 -n 程序名 -w(去掉控制台窗口,这在GUI界面时非常有用) -i 图标.ico”
        “pyinstaller -F test1/Demo_Test1_Python.py”
    """
    
    
    def bubble_sort(arr):
        """
        冒泡排序
        :param arr:
        :return:
        """
        for i in range(1, len(arr)):
            for j in range(0, len(arr)-i):
                if arr[j] > arr[j+1]:
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
        return arr
    
    
    if __name__ == '__main__':
        test = [1, 8, 123, 18, 99, 300]
        print("************************************")
        print("*             冒泡排序             *")
        print("************************************")
        print("源列表:", test)
        result = bubble_sort(test)
        print("排序后:", result)
        print("************************************")
        input("按任意键退出...")
    
    

    4.1.2、程序运行

    在这里插入图片描述

    4.1.3、打包

    pyinstaller -F test1/Demo_Test1_Python.py
    

    4.1.4、打包后效果

    在这里插入图片描述

    4.2、多个文件打包

    4.2.1、核心源码

    #! -*- coding: utf-8 -*-
    """
    Author: ZhenYuSha
    Create Time: 2020-1-20
    Info:  Python打包示例2,多个文件打包
        “pyinstaller -F(单个可执行文件) 程序源 -n 程序名 -w(去掉控制台窗口,这在GUI界面时非常有用) -i 图标.ico”
        “pyinstaller -F test2/Demo_Test2_Python.py”
    """
    from test2.Demo_bubble_sort import bubble_sort
    from test2.Demo_heap_sort import heap_sort
    
    
    if __name__ == '__main__':
        test1 = [1, 8, 123, 18, 99, 300]
        test2 = test1[:]
        print("************************************")
        print("*             两个排序             *")
        print("************************************")
        print("列表1 id:", id(test1))
        print("列表2 id:", id(test2))
        print("源列表1:", test1)
        print("源列表2:", test2)
        result1 = bubble_sort(test1)
        result2 = heap_sort(test1)
        print("冒泡后:", result1)
        print("堆排后:", result2)
        print("************************************")
        input("按任意键退出...")
    
    

    4.2.2、程序运行

    在这里插入图片描述

    4.2.3、打包

    pyinstaller -F test2/Demo_Test2_Python.py
    

    4.2.4、打包后效果

    在这里插入图片描述

    4.3、多层文件打包

    4.3.1、核心源码

    #! -*- coding: utf-8 -*-
    """
    Author: ZhenYuSha
    Create Time: 2020-1-20
    Info:  Python打包示例3,多层文件打包
        “pyinstaller -F(单个可执行文件) 程序源 -n 程序名 -w(去掉控制台窗口,这在GUI界面时非常有用) -i 图标.ico”
        “pyinstaller -F test3/Demo_Test3_Python.py”
    """
    from test3.sort.Demo_bubble_sort import bubble_sort
    from test3.sort.Demo_heap_sort import heap_sort
    from test3.Demo_test import Test
    
    
    if __name__ == '__main__':
        test1 = [1, 8, 123, 18, 99, 300]
        test2 = test1[:]
        print("************************************")
        print("*             两个排序             *")
        print("************************************")
        print("列表1 id:", id(test1))
        print("列表2 id:", id(test2))
        print("源列表1:", test1)
        print("源列表2:", test2)
        result1 = bubble_sort(test1)
        result2 = heap_sort(test1)
        print("冒泡后:", result1)
        print("堆排后:", result2)
        Test.run()
        print("************************************")
        input("按任意键退出...")
    
    

    4.3.2、程序运行

    在这里插入图片描述

    4.3.3、打包

    pyinstaller -F test3/Demo_Test3_Python.py
    

    4.3.4、打包后效果

    在这里插入图片描述

    4.4、多层文件打包(加图标该可执行程序名称)

    4.4.1、核心源码

    #! -*- coding: utf-8 -*-
    """
    Author: ZhenYuSha
    Create Time: 2020-1-20
    Info:  Python打包示例4,多层文件打包加图标,修改程序名
        “pyinstaller -F(单个可执行文件) 程序源 -n 程序名 -w(去掉控制台窗口,这在GUI界面时非常有用) -i 图标.ico”
        “-p 表示自定义需要加载的类路径(一般情况下用不到)”
        “pyinstaller -F test4/Demo_Test4_Python.py -n Test4 -i test4/test4.ico”
    """
    from test3.sort.Demo_bubble_sort import bubble_sort
    from test3.sort.Demo_heap_sort import heap_sort
    from test3.Demo_test import Test
    
    
    if __name__ == '__main__':
        test1 = [1, 8, 123, 18, 99, 300]
        test2 = test1[:]
        print("************************************")
        print("*             两个排序             *")
        print("************************************")
        print("列表1 id:", id(test1))
        print("列表2 id:", id(test2))
        print("源列表1:", test1)
        print("源列表2:", test2)
        result1 = bubble_sort(test1)
        result2 = heap_sort(test1)
        print("冒泡后:", result1)
        print("堆排后:", result2)
        Test.run()
        print("************************************")
        input("按任意键退出...")
    
    

    4.4.2、程序运行

    在这里插入图片描述

    4.4.3、打包

    pyinstaller -F test4/Demo_Test4_Python.py -n Test4 -i test4/test4.ico
    

    4.4.4、打包后效果

    在这里插入图片描述

    5、Linux打包

    5.1、多层文件打包

    5.1.1、核心源码

    #! -*- coding: utf-8 -*-
    """
    Author: ZhenYuSha
    Create Time: 2020-1-20
    Info:  Python打包示例5,多层文件打包修改程序名 linux打包
        “pyinstaller -F(单个可执行文件) 程序源 -n 程序名 -w(去掉控制台窗口,这在GUI界面时非常有用) -i 图标.ico”
        “-p 表示自定义需要加载的类路径(一般情况下用不到)”
        “pyinstaller -F Demo_Test5_Python.py -n Test5”
    """
    from sort.Demo_bubble_sort import bubble_sort
    from sort.Demo_heap_sort import heap_sort
    from Demo_test import Test
    
    
    if __name__ == '__main__':
        test1 = [1, 8, 123, 18, 99, 300]
        test2 = test1[:]
        print("************************************")
        print("*             两个排序             *")
        print("************************************")
        print("列表1 id:", id(test1))
        print("列表2 id:", id(test2))
        print("源列表1:", test1)
        print("源列表2:", test2)
        result1 = bubble_sort(test1)
        result2 = heap_sort(test1)
        print("冒泡后:", result1)
        print("堆排后:", result2)
        Test.run()
        print("************************************")
        input("按任意键退出...")
    
    

    5.1.2、程序运行

    在这里插入图片描述

    5.1.3、打包后效果

    在这里插入图片描述

    5.2、遇到的错误,以及解决方案

    5.2.1、错误1(找不到pyinstaller)

    我是用 pip install 安装的pyinstaller,于是先find了一下,找到了此命令,于是就做了个软链接。

    解决方案,直接将安装目录下面的pyinstaller包作为软链接到/usr/bin下

    ln -s /usr/local/python3.6.8/bin/pyinstaller /usr/bin/pyinstaller3.6
    

    5.2.2、错误2(rebuild your Python with --enable-shared

    在这里插入图片描述
    这种错误,人家已经把解决方案说出来了,就是需要重新编译嘛,那我们就按照他的来就OK了。先找到源码按照的目录,并按照以下命令操作。

    ./configure --prefix=/usr/local/python3.6.8(需要安装的目录) --enable-shared --with-ssl
    make
    make install
    

    在这里插入图片描述

    5.2.3、错误3(找不到 libpython3.6m.so.1.0)

    在这里插入图片描述
    解决方案,在安装目录找到此文件,并拷贝到/usr/lib64目录下:
    在这里插入图片描述

    6、Github源码分享

    https://github.com/ShaShiDiZhuanLan/Demo_Install_Python

    展开全文
  • 使用PyInstaller打包python文件 在和myscript.py同目录下执行命令:pyinstaller mycript.py然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件, 你会发现dist目录下面有一堆...

    1.安装PyInstaller

        pip install pyinstaller

        pyinstaller --version

    2.使用PyInstaller打包python文件

      在和myscript.py同目录下执行命令:
    pyinstaller mycript.py然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,
    你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件
    
    
    pyInstaller支持单文件模式,只需要执行:
    pyinstaller -F mycript.py
    你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。


    展开全文
  • 使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

    展开全文
  • linux下将Python脚本打包为可执行文件

    千次阅读 2017-04-27 13:51:46
    一. 下载pyinstaller链接二. 解压无需安装,解压即可... 输入命令,进行打包 命令格式: pyinstaller_path/pyinstaller.py -F source.py 命令执行后,在当前目录中会出现一个dist目录。生成的可执行文件在这个目录下。
  • Python项目打包发布方法

    万次阅读 多人点赞 2020-03-01 19:31:21
    目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用。 在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是把程序所引用的库文件也一起打包在一起。...
  • python文件打包为windows linux下可执行的二进制文件 日期:2018年08月15日 环境准备 确保.py文件在当前python环境下可正常运行 python环境建议:python3.5(官方版)pyinstaller 3.3.1 anaconda3.6...
  • Python是解释性语言,我们如何将普通的Python项目(含有依赖,redis)打包成可运行的一个文件(实际为文件夹吧)。下面描述一个基本流程,供大家参考。以下流程是我们实际线上REDIS数据修改的一个需求,可以简单的...
  • 应公司要求,领导要对python程序进行打包处理。所以一场煎熬战无声打响,这个过程是最烦人,最没有人愿意干的(明知道是个坑,还得跳!!!!!!!!)。要求是ubantu系统下,但是我的电脑是windows,所以现在...
  • 咨询下,windows下开发的python程序,能不能直接在windows下打包成linux下可执行文件,在linux下装依赖包装不明白了,求老司机给普及下!
  • linux环境打包python工程为可执行程序

    千次阅读 2019-03-14 15:36:21
    本次又个需求,在ubuntu上面开发的python代码程序需要打包成一个可执行程序然后交付给甲方,因为不能直接给源码给甲方,所以寻找方法将python开发的源码打包成一个可执行程序,注意是打包成在ubuntu上面的可执行程序...
  • Linux下使用pyinstaller打包python程序

    万次阅读 2018-09-30 15:24:38
    下载pyinstaller 使用pip3下载源码: pip3 download pyinstaller (注意下载的位置,使用pwd命令查看) 也可以使用第三方下载,直接下载到指定的目录:...tar...
  • python打包运行在Linux

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

    千次阅读 2018-06-14 12:43:47
    最近给运维写一个系统维护的python脚本,但是被告知生产环境有很多服务器没有安装python解释器,于是在网上搜索多pyinstaller解决方案,本文简单记录之。 下载pyinstaller。 最新的pyinstaller版本为2.0版本,...
  • 背景: 利用setuptools来实现,所以先安装setuptools,其实Python2.7.9及之后的版本都自带安装setuptools了,无需在另外安装 如果没有安装setuptools的直接下载源码包解压安装就行了 示例:以linux环境为例 1....
  • 如何将python3.6软件的py文件打包成exe程序

    万次阅读 多人点赞 2017-09-30 19:42:26
    在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序。在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行打包的方法。关于cx_Freeze打包的方法,可以...
  • 在Windows下把python转化可执行程序还是比较简单,用py2exe就可以了。Linux下比较方便的有这么几种:1. py2installer
  • 事情是这样的我用打包命令:pyinstaller -F E:\python\clpicdownload\mypython.py打包了一个exe程序,但是运行时提示我缺 少bs4模块然后我就去查pyinstaller的使用方法,找到pyinstaller有一个-p参数: 1.设置导入...
  • Python 如何将项目打包成exe可执行程序

    万次阅读 多人点赞 2019-05-23 13:51:29
    大家都知道,Python是一种脚本语言,也就是解释型的语言,需要解释器来进行解释以后才可以执行,而Python源代码需要在Python虚拟机上面运行,但是我们做好的程序,不可能给用户使用的时候还让他安装一个Python环境,...
  • 首先,需要明确的一点是,必须在 windows 安装 python,并且用 windows 下的 python 来执行打包的操作,才可以得到 exe 可执行程序(可以先在 linux 下完成调试)。 因为无论是 py2exe 还是 pyinstaller,都是针对...
1 2 3 4 5 ... 20
收藏数 25,345
精华内容 10,138
关键字:

python程序打包成linux