一.pyinstaller簡介
pyinstaller將Python腳本打包成可執(zhí)行程序,使在沒有Python環(huán)境的機器上運行
最新版是pyinstaller 3.1.1琴拧。支持python2.7和python3.3+降瞳。
可運行在Windows艾蓝,Mac和Linux操作系統(tǒng)下力崇。
但它不是跨編譯的,也就是說在Windows下用PyInstaller生成的exe只能運行在Windows下赢织,在Linux下生成的只能運行在Linux下亮靴。
二.pyinstaller在windows下的安裝
使用命令pip install pyinstaller即可
在windows下,pyinstaller需要PyWin32的支持于置。當用pip安裝pyinstaller時未找到PyWin32茧吊,會自動安裝pypiwin32
出現Successfully installed pyinstaller-3.1.1 pypiwin32-219即表示安裝成功
三.打包
打包的app里并不包含任何源碼,但將腳本的.pyc文件打包了八毯。
基本語法:
pyinstaller options myscript.py
常用的可選參數如下:
--onefile 將結果打包成一個可執(zhí)行文件
--onedir 將所有結果打包到一個文件夾中搓侄,該文件夾包括一個可執(zhí)行文件和可執(zhí)行文件執(zhí)行時需要的依賴文件(默認)
--paths=DIR 設置導入路徑
--distpath=DIR 設置將打包的結果文件放置的路徑
--specpath=DIR 設置將spec文件放置的路徑
--windowed 使用windows子系統(tǒng)執(zhí)行,不會打開命令行(只對windows有效)
--nowindowed 使用控制臺子系統(tǒng)執(zhí)行(默認)(只對windows有效)
--icon=<FILE.ICO> 將file.ico添加為可執(zhí)行文件的資源(只對windows有效)
如pyinstaller --paths="D:\Queena" guess_exe.py
四.小實例(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:\Queena\PyCharmProjects\dist1\computer_three.ico" guess_exe.py
就會在當前文件下形成build文件夾唉工、dist文件夾和.spec文件。
dist里就是guess_exe.exe可執(zhí)行文件汹忠。
如果有打包錯誤淋硝,具體看build里的warn***.txt文檔,里面詳細記載了錯誤的原因宽菜。一般都是庫丟失谣膳。
spec文件告訴PyInstaller如何去處理腳本。它對腳本名以及大多數pyinstaller的可選參數進行加密赋焕。PyInstaller就是通過執(zhí)行spec文件的內容來build the app参歹。
五. 參加麻瓜編程心得:
我最大的感想是魔力教程的優(yōu)美仰楚,它清晰隆判、簡潔、易懂僧界。
視頻學習過程中深刻體會到了編制者的用心侨嘀,精美的配圖加上適宜的背景音樂,基礎知識和貼切的小項目捂襟,這一系列的配套成就了麻瓜的不凡咬腕。
成功的學會十萬數據的爬取之后,那種成就感簡直了哎呀葬荷,無法言喻涨共。之后是數據的可視化還有各種圖形以及顯示在網頁上,這一連串的成就都讓我很開心宠漩,而且這個技能讓我在職業(yè)技術上有了很大的提升举反,以后跳槽我又有了資本,十分感謝麻瓜扒吁!
六. 參考網址:
http://pythonhosted.org/PyInstaller/
http://blog.csdn.net/zc02051126/article/details/8827868
想上手實戰(zhàn)的小白看過來火鼻,這里有網易云課堂上最暢銷的 Python 課程:Python 實戰(zhàn):四周學會爬蟲系統(tǒng)