澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站:python学习笔记,如何把

1.应用场景

一.pyinstaller简介

pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行

最新版是pyinstaller 3.1.1。支持python2.7和python3.3 。
可运行在Windows,Mac和Linux操作系统下。
但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下。

pyinstaller 库的使用

在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序。这里我们介绍一种简单常用的方法,pyinstaller模块

使用PyInstaller将Python程序文件转换为可执行程序文件,

Windows下采用PyInstall将py文件转换成exe可执行文件 好不容易写完的py文件,想做成exe文件,最开始选择用py2exe,结果生成的exe遇到两个问题,

  1. py程序里print 的信息,cmd中执行tool后并没有显示在屏幕上;
    2. 调用dll接口,执行py文件时是阻塞等待的,结果cmd中执行exe时,tool很快先返回了,接口还在运行,很诡异
    一时找不到解决的办法,无奈弃用了,在网上找了pyinstall,试了一下,感觉功能更强大些。。。
    安装PyInstaller之前需确认首先安装了pywin32
    下载地址:
     
    一、PyInstaller安装
    1.下载地址:
    2.最新版本:PyInstaller 2.0
    3.直接“解压缩”之后即可使用,解压到您想让他在的路径即可
     
    二、PyInstaller配置 1.事先写好py程序
    2.在命令行执行:

    Python Makespec.py --console --onefile NotePadnotepad.py

报错:

Configfile is missing or unreadable. Please run Configure.py before building

3.在命令行执行:

Configure.py

报错:

Python 2.6 on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/

4.安装最新版本的 pywin32-217.win32-py2.7.exe,下载地址:
 
三、PyInstaller使用 PyInstaller的使用相对简单,cmd下进入解压出来的目录,执行如下命令:

python pyinstaller.py [opts] yourprogram.py

四、主要选项包括: -F, -onefile 打包成一个exe文件
-D, -onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c, -console, -nowindowed 使用控制台,无界面(默认)
-w, -windowed, -noconsole 使用窗口,无控制台

五、注意事项 澳门新浦京娱乐场网站:python学习笔记,如何把Python脚本导出为exe程序。在转换之前要确保py程序可以正常通过;
如果转换过程中出现什么错误,用搜索引擎搜索解决一下。


Linux下安装pyinstaller用于将py文件打包生成一个可执行文件
**
一、安装使用流程**

  1. 首先给系统装个easy_install, 如果装了的可以跳过这步
    到pypi官方网址 去download最新版本

  2. 官网上下载pyinstaller,当前的最新版本是2.1
    (1) 网址

3.解包进入源码目录
(1)

tar -zxvf pyinstaller_2.1.tar.gz

(2)

cd pyinstaller-2.1

运行

python setup.py install
  1. 拷贝py文件
    将需打包的py文件如test.py 拷贝到当前目录

  2. 生成可执行文件
    cd到pyinstaller目录, 执行

    python pyinstaller.py test.py

二、可能遇到的问题

  1. 用户权限
    澳门新浦京娱乐场网站:python学习笔记,如何把Python脚本导出为exe程序。直接在root用户下运行pyinstaller会报错 “cannot run pyinstaller as user root"...
    所以需新增另外一个用户,并给用户对pyinstaller所在的目录及所有父目录添加读写权限,避免运行后报‘mkdir' permission denied...

  2. 找不到python lib动态库
    su切换到新增用户后,
    pyinstaller报错找不到python动态库

    raise IOError("Python library not found!") IOError: Python library not

执行python --version查看当前版本,并查找/usr/local/lib 下有没有对应版本的libpython*.*.so文件,
如果有则跳过这步,如果没有则需要重新安装python,在python安装配置中一定要加上--enable-shared参数就可以生成对应动态链接库,如:

#./configure --enable-shared --prefix=/usr/local
#make
#make install

我环境中更新过python版本,导致/usr/lib下不是最新版本的库文件,需要将新版本拷贝到对应的/usr/lib目录下,注意有两个文件:

#cp libpython*.so /usr/lib/
#ln -s /usr/lib/libpython*.so.1.0 /usr/lib/libpython*.so

Windows下采用PyInstall将py文件转换成exe可执行文件 好不容易写完的py文件,想做成exe文...

1.1 故事背景

我自己用python写了一个小程序发给其他同事用,给他的就是一个.py文件,不过他觉得比较麻烦,还要安装环境,他问我有没有简单一点的方式,我给一个exe文件,他就不用安装环境就可以运行我的程序,我内心在想这么麻烦,还要我跟你打包成为exe,不过没办法,谁叫是好朋友了,我就答应他了。

二.pyinstaller在windows下的安装

使用命令pip install pyinstaller即可
在windows下,pyinstaller需要PyWin32的支持。当用pip安装pyinstaller时未找到PyWin32,会自动安装pypiwin32

澳门新浦京娱乐场网站 1

澳门新浦京娱乐场网站 2

出现Successfully installed pyinstaller-3.1.1 pypiwin32-219即表示安装成功

PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。PyInstaller 需要在命令行(控制台)下用pip 工具安装,如下:

  1. 直接pip安装

1.2 寻找资料

在写c#的时候,面向nuget编程(谁叫四渣渣程序员了);在学习python之前就之前有很多组件(开心的飞起),开始在github和google上寻找资源,最终发现以下几个东西 相关来源

  • PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)。官网
  • dh-virtualenv:构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。官网
  • Nuitka:将脚本、模块、包编译成可执行文件或扩展模块。官网
  • py2app:将 Python 脚本变为独立软件包(Mac OS X)。官网
  • py2exe:将 Python 脚本变为独立软件包(Windows)。官网
  • pynsist:一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python 本身。官网

三.打包

打包的app里并不包含任何源码,但将脚本的.pyc文件打包了。

基本语法:
pyinstaller options myscript.py
常用的可选参数如下:
--onefile 将结果打包成一个可执行文件
--onedir 将所有结果打包到一个文件夹中,该文件夹包括一个可执行文件和可执行文件执行时需要的依赖文件(默认)
--paths=DIR 设置导入路径
--distpath=DIR 设置将打包的结果文件放置的路径
--specpath=DIR 设置将spec文件放置的路径
--windowed 使用windows子系统执行,不会打开命令行(只对windows有效)
--nowindowed 使用控制台子系统执行(默认)(只对windows有效)
--icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对windows有效)

如pyinstaller --paths="D:Queena" guess_exe.py

:>pip install pyinstaller 

1.3 技术方案

通过对比,最终选择了上面例子中的 pyinstaller

四.小实例(windows下)

写好游戏文件guess_exe.py,代码如下:

__author__ = 'qa-2'
# -*- coding:utf-8 -*-
# 摇3次骰子,当总数total,3<=total<=10时为小,11<=total<=18为大
import random
import time

def enter_stake(current_money):
    '''输入小于结余的赌资及翻倍率,未考虑输入type错误的情况'''
    stake = int(input('How much you wanna bet?(such as 1000):'))
    rate = int(input("What multiplier do you want?你想翻几倍?(such as 2):"))
    small_compare = current_money < stake * rate
    while small_compare == True:
        stake = int(input('You has not so much money ${}!How much you wanna bet?(such as 1000):'.format(stake * rate)))
        rate = int(input("What multiplier do you want?你想翻几倍?(such as 2):"))
        small_compare = current_money < stake * rate
    return stake,rate

def roll_dice(times = 3):
    '''摇骰子'''
    print('<<<<<<<<<< Roll The Dice! >>>>>>>>>>')
    points_list = []
    while times > 0:
        number = random.randrange(1,7)
        points_list.append(number)
        times -= 1
    return points_list

def roll_result(total):
    '''判断是大是小'''
    is_big = 11 <= total <= 18
    is_small = 3 <= total <= 10
    if is_small:
        return 'Small'
    elif is_big:
        return 'Big'

def settlement(boo,points_list,current_money,stake = 1000,rate = 1):
    '''结余'''
    increase = stake * rate
    if boo:
        current_money  = increase
        print('The points are '   str(points_list)   ' .You win!')
        print('You gained $'   str(increase)   '.You have $'   str(current_money)   ' now.' )
    else:
        current_money -= increase
        print('The points are '   str(points_list)   ' .You lose!')
        print('You lost $'   str(increase)   '.You have $'   str(current_money)   ' now.' )
    return current_money

def sleep_second(seconds=1):
    '''休眠'''
    time.sleep(seconds)


# 开始游戏
def start_game():
    '''开始猜大小的游戏'''
    current_money = 1000
    print('You have ${} now.'.format(current_money))
    sleep_second()
    while current_money > 0:
        print('<<<<<<<<<<<<<<<<<<<< Game Starts! >>>>>>>>>>>>>>>>>>>>')
        your_choice = input('Big or Small: ')
        choices = ['Big','Small']
        if your_choice in choices:
            stake,rate = enter_stake(current_money)
            points_list = roll_dice()
            total = sum(points_list)
            actual_result = roll_result(total)
            boo = your_choice == actual_result
            current_money = settlement(boo,points_list,current_money,stake,rate)
        else:
           print('Invalid input!')
    else:
        sleep_second()
        print('Game Over!')
        sleep_second(2)

if __name__ == '__main__':
    start_game()

之后命令行,切换到guess_exe.py的目录下,
输入:

pyinstaller --onefile --nowindowed --icon=" D:QueenaPyCharmProjectsdist1computer_three.ico" guess_exe.py

澳门新浦京娱乐场网站 3

澳门新浦京娱乐场网站 4

就会在当前文件下形成build文件夹、dist文件夹和.spec文件。
dist里就是guess_exe.exe可执行文件。

澳门新浦京娱乐场网站 5

如果有打包错误,具体看build里的warn***.txt文档,里面详细记载了错误的原因。一般都是库丢失。
spec文件告诉PyInstaller如何去处理脚本。它对脚本名以及大多数pyinstaller的可选参数进行加密。PyInstaller就是通过执行spec文件的内容来build the app。

pip install pyinstaller

1.4 pyinstaller 使用教程整理

  1. 直接在命令行用pip安装 pyinstaller【第一次需要安装成功后,后面就不需要再安装了】
pip install pyinstaller

澳门新浦京娱乐场网站 6

  1. 在命令行中切换到要打包的程序所在目录,直接输入下面的指令即可
pyinstaller learn01.py -F

澳门新浦京娱乐场网站 7

pyinstaller参数 含义
-F 指定打包后只生成一个exe格式的文件
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c –console, –nowindowed 使用控制台,无界面(默认)
-w –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库。
-i 改变生成程序的icon图标
-h pyinstaller各个参数的讲解

五. 参加麻瓜编程心得:

我最大的感想是魔力教程的优美,它清晰、简洁、易懂。
视频学习过程中深刻体会到了编制者的用心,精美的配图加上适宜的背景音乐,基础知识和贴切的小项目,这一系列的配套成就了麻瓜的不凡。
成功的学会十万数据的爬取之后,那种成就感简直了哎呀,无法言喻。之后是数据的可视化还有各种图形以及显示在网页上,这一连串的成就都让我很开心,而且这个技能让我在职业技术上有了很大的提升,以后跳槽我又有了资本,十分感谢麻瓜!

六. 参考网址:
http://pythonhosted.org/PyInstaller/
http://blog.csdn.net/zc02051126/article/details/8827868


想上手实战的小白看过来,这里有网易云课堂上最畅销的 Python 课程:Python 实战:四周学会爬虫系统

:>pip3 install pyinstaller 
  1. 更新或升级

1.5 关于 pyinstaller 使用总结

在用 pyinstaller 打包成exe后,点击运行,发现直接闪退,有点懵逼,猜想肯定是自己的使用方式不对,后来也去google上搜索了,发现也有人也在搜索 pyinstaller 打包exe后闪退的相关问题,按照教程尝试了好几篇,找了好几天一直没有理想的答案,发现还是闪退。既然没找到答案,那么我就去youtube上找个播放次数比较多的教程看看,看看别个怎么用法,最终大神的教程中找到了解决办法,在代码最后面加上相关代码就行,我整理了一下三种做法:

# 1.暂停的第一种方式
# time.sleep(10)

# 2.暂停的第二种方式
# input("Press <enter>")

# 3.暂停的第三种方式 (比较推荐这个)
# 提示使用之前,记得引入相关组件 import os
os.system("pause")

看到以上的做法,突然想起来了在c#中写控制台的场景,最后都会加一句一下代码(如果不加,那就直接退出控制台了,看不到运行后的控制台返回的参数:

Console.Read();

PyInstaller 的官方网站网址为 库会自动将 PyInstaller 命令安装到 Python 解释器目录中,与 pip 或 pip3 命令路径相同,因此可以直接使用。使用PyInstaller 库十分简单,请注意,由于 PyInstaller 不支持源文件命中有英文句号(.)存在,假设 dpython.py 文件在 D:codes 目录中,命令如下:

1.6 相关参考教程

  1. 知乎的入门教程
  2. awesome中文系列
  3. b站视频教程1
  4. b站视频教程2
:>pyinstaller dpython.py 
pip install --upgrade pyinstaller

  1. 下载文件安装进入setup.py所在路径,执行python setup.py install 即可
:>pyinstaller D:codesdpython.py 

用pyinstaller打包文件

执行完毕后,源文件所在目录将生成 dist 和 build 两个文件夹。其中,build 目录是 pyinstaller 存储临时文件的目录,可以安全删除。最终的打包程序在 dist 内部的 dpython 目录中。目录中其他文件是可执行文件 dpython.exe 的动态链接库。可以通过-F 参数对 Python 源文件生成一个独立的可执行文件,如下:

pyinstaller -F test.py
:>pyinstaller -F dpython.py 

常用参数说明:

执行后在 dist 目录中出现了 dpython.exe 文件,没有任何依赖库,执行它即可。使用 PyInstaller 库需要注意以下问题:文件路径中不能出现空格和英文句号(.);源文件必须是 UTF-8 编码,暂不支持其他编码类型。采用 IDLE编写的源文件都保存为 UTF-8 编码形式,可直接使用。PyInstaller 有一些常用参数,如下所示:

  • –icon=图标路径
  • -F 打包成一个exe文件
  • -w 使用窗口,无控制台
  • -c 使用控制台,无窗口
  • -D 创建一个目录,里面包含exe以及其他一些依赖性文件
  • pyinstaller -h 来查看参数

-h, --help 查看帮助
-v, --version

返回目标文件目录,发现该目录下生成了.spec文件test.spec,打包好的exe文件,在同目录的dist文件中,也可以通过pyinstaller 改变生成exe程序的图标,pyinstaller -F --icon=my.ico test.py

查看 PyInstaller 版本

  • windows用户执行操作后往往会发生程序闪退的情况,这是因为打包程序时相关库以及其他环境模块并没有在一块儿打包,这里有几种解决方法:

--clean 清理打包过程中的临时文件
-D, --onedir
默认值,生成 dist 目录
-F, --onefile
在 dist 文件夹中只生成独立的打包文件第
-p DIR, --paths DIR 添加 Python 文件使用的第三方库路径
-i <.ico or .exe,ID or .icns>,--icon <.ico or .exe,ID or .icns >指定打包程序使用的图标(icon)文件

  1. 将exe拖到cmd中执行,终端里面就会有输出
  2. 在代码最后加入input操作,待用户输入后才会结束
  3. 原理和上面一个类似,这里可以更方便的利用python自带的msvcrt,他会自动获取用户的输入并返回,即达到了点击任意键结束,如下:

PyInstaller 命令不需要在 Python 源文件中增加代码,只需要通过命令行进行打包即可。-F 参数最为常用,对于包含第三方库的源文件,可以使用-p 添加第三方库所在路径。如果第三方库由 pip 安装且在Python 环境目录中,则不需要使用-p 参数。

您可能感兴趣的文章:

  • 用PyInstaller把Python代码打包成单个独立的exe可执行文件
  • 使用PyInstaller将python转成可执行文件exe笔记
  • 通过Py2exe将自己的python程序打包成.exe/.app的方法
  • 使用python编写简单的小程序编译成exe跑在win10上
  • 解析Python中的eval()、exec()及其相关函数
  • python的exec、eval使用分析
  • python学习教程之使用py2exe打包
  • 详解python中executemany和序列的使用方法
  • Python之py2exe打包工具详解
  • 详解Python3.6的py文件打包生成exe
import msvcrtprint(" ********** 按任意键结束 **********")msvcrt.getch()

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:澳门新浦京娱乐场网站:python学习笔记,如何把