python linux编程与window编程_Python3如何在Windows和Linux上打包
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程序。
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源码分享
到此这篇关于Python3如何在Windows和Linux上打包的文章就介绍到这了,更多相关Python3 Linux打包内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!
python linux编程与window编程_Python3如何在Windows和Linux上打包相关推荐
- Linux系统文件误删除恢复方法;宿主机windows与Linux文件共享!
实验项目: Linux系统文件误删除恢复方法: 宿主机windows与Linux文件共享 实验环境: 一:VMware虚拟机,Linux系统RedHat6.5(什么版本不重要): 二:安装以下3个依赖 ...
- linux刻录windows光盘启动,如何在 Windows / Ubuntu / macOS 上刻录 Ubuntu 启动光盘
Linux 从入门到放弃,第一篇,必须是安装.正好实验室的服务器也需要重装一下,今天就记录一下如何在 Windows / Ubuntu / macOS 上制作 Ubuntu 的启动光盘.制作启动U盘不 ...
- python linux编程与window编程_Python实现Windows和Linux之间互相传输文件(文件夹)的方法...
项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件.所以就需要实现如何把文件从Windows系统传输到Linux系统中. 在项目中使用了ps ...
- windows与Linux实时传输数据,I01 物理隔离条件下Windows与Linux服务器的文件传输脚本...
title: I01 物理隔离条件下Windows与Linux服务器的文件传输脚本author: Adolph Leecategories: 进阶tags: paramiko打怪升级mathjax: ...
- linux xrdp 远程桌面,详解如何在Ubuntu 20.04上安装Xrdp服务器(远程桌面)
Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统.通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样. 这篇指南讲解如何在 Ub ...
- 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux
一.自由软件基金会的呼吁 上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万). 我觉得,这个呼吁很重要 ...
- linux 文件和打印机共享文件夹,能实现Windows和Linux系统之间文件和打印机共享的Linux服务是( )...
能实现Windows和Linux系统之间文件和打印机共享的Linux服务是( ) 答:SAMBA HTML 代 码 表示() 答:创建一个单选框 根据凯恩思的理论,在短期中总供给线为一条水平线,当总需 ...
- linux远程桌面没有声音,远程桌面到 Windows 10 Pro 上的远程麦克风问题
想从常用笔记本里远程桌面到另一台电脑上的 Windows 10 Pro 进行测试.遇到一些坑,最大的问题比如客户端 DPI 高而导致远程桌面显示的字太小,无法将本地的麦克风作为远程桌面上应用程序的声音 ...
- 开启算法编程之旅的准备工作——如何在Windows 上安装 Anaconda 和 PyCharm
Anaconda 指的是一个开源的 Python 发行版本,其包含了 conda.Python 等 180 多个科学包及其依赖项. PyCharm 是一种 Python IDE(Integrated ...
最新文章
- “笨方法”学习Python笔记(2)-VS Code作为文本编辑器以及配置Python调试环境
- reactnative 获取定位_react native 获取地理位置的方法示例
- 准爸爸日记——20120502海淀妇幼建档续
- SQL Server 事务日志
- tomcat双击startup.bat启动时闪退
- 如何在Windows 8中更改登录屏幕的颜色
- 测试反模式冰激凌模式的不足_单元测试反模式,完整列表
- php 最大限制,php – ModSecurity最大发布限制(PCRE限制错误)
- 面向对象(C#)相关理论知识点
- 彻底解决--“未能加载文件或程序集“xxx.dll”或它的某一个依赖项”
- 2010上机二 中国象棋马走日
- python中访问列表元素具体格式_Python3基础 list 访问列表中的列表的元素
- win10开发环境搭建之wsl2(Ubuntu)+Terminal+docker
- 微信小程序直播有哪些推广技巧?
- 【昊鼎王五】pip安装pymssql模块时报错“PEP 517”怎么解决?
- HTML经典绝对定位图片
- python图像算法工程师_图像算法工程师的岗位职责
- 安工大Linux程序设计实验
- 休闲零食生产企业如何做好供应链管理?
- 【历史上的今天】2 月 19 日:Hacker News 上线;Adob​​e Photoshop 诞生;DVD 退出历史舞台
热门文章
- ios kb转m_iOS 音频录音和格式转换
- linux mysql设置数据库utf_设置mysql数据库 utf8
- winform combobox选择后_后驱车真的比前驱车更加高级吗?涨知识了!
- Android开发之关于MVVM架构中视图数据绑定框架dataBinding的基本用法
- HTML与CSS基础之兄弟元素(六)
- php mysql 绑定变量,在MYSQL中,怎么用PDO绑定变量的方式插入数据?
- ffmpeg 视频转ts切片 生成m3u8视频播放列表
- Flume学习_接收器
- 一般图最大匹配——带花树
- 自动化运维之部署Puppet