小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用 py2exe 打包 Python 程序

 ufo999 2021-09-20

上回在《使用 PyInstaller 打包 Python 程序》中,我們介紹了使用 PyInstaller 對 Python 程序進(jìn)行打包,今天帶大家認(rèn)識(shí)一個(gè)新的工具:py2exe。

接下來將從這幾個(gè)方面進(jìn)行介紹:基本使用方法、高級參數(shù)、注意點(diǎn)等。

簡介 & 安裝

py2exe 是一個(gè)將 python 腳本轉(zhuǎn)換成 Windows 上的可獨(dú)立執(zhí)行的可執(zhí)行程序(*.exe)的工具,這樣,你就可以不用裝 python 而在 Windows 系統(tǒng)上運(yùn)行這個(gè)可執(zhí)行程序。

  • 安裝

pip install py2exe# 或者python -m pip install py2exe
  • 1

  • 2

  • 3

  • 1

  • 2

  • 3

基本用法

看一個(gè)簡單的例子:先寫一個(gè)簡單的腳本,文件名:

#!/usr/bin/env python  # -*- coding: utf-8 -*-  
  def say_hello(name):  
    print('Hello, '   name)
  if __name__ == '__main__':  
    name = input('What's your name:')
    say_hello(name)123456789123456789123456789123456789

下面還需要個(gè)用于發(fā)布程序的設(shè)置腳本:,在其中的 setup 函數(shù)前插入語句 import py2exe。

from distutils.core import setupimport py2exe setup(console=[''])
  • 1

  • 2

  • 3

  • 4

  • 1

  • 2

  • 3

  • 4

  • 1

  • 2

  • 3

  • 4

  • 1

  • 2

  • 3

  • 4

然后按下面的方法運(yùn)行 :

python  py2exe11

運(yùn)行生成的文件:

運(yùn)行

需要注意,這里需要在 Windows 環(huán)境下運(yùn)行!否則可能會(huì)出現(xiàn)以下異常:

上面的命令執(zhí)行后將產(chǎn)生一個(gè)名為 dist 的子目錄,其中包含了 helloworld.exe、python24.dll、library.zip 等等文件:

dist目錄

dist 子目錄中的文件包含了程序所必須的東西,你需要將該目錄中的所有內(nèi)容一起發(fā)布。

默認(rèn)情況下,py2exe 會(huì)在 dist 下創(chuàng)建以下這些文件:

1、一個(gè)或多個(gè) exe 文件;
2、幾個(gè) .pyd 文件,它們是已編譯的擴(kuò)展名,是 exe 文件所需要的;
3、python**.dll,加上其它的 .dll 文件,這些 .dll 是 .pyd 所需要的;
4、一個(gè) library.zip 文件,它包含了已編譯的純的 python 模塊如 .pyc 或 .pyo;

擴(kuò)展

setup 優(yōu)化

我們可以看到生成的 dist 目錄中文件很多,那么是不是可以進(jìn)行優(yōu)化呢?

# # from distutils.core import setup# import py2exe# setup(console=[''])# -*- encoding:utf-8 -*-from distutils.core import setupimport py2exe INCLUDES = []options = { 'py2exe' : { 'compressed' : 1, # 壓縮 'optimize' : 2, 'bundle_files' : 1, # 所有文件打包成一個(gè) exe 文件 'includes' : INCLUDES, 'dll_excludes' : ['MSVCR100.dll'] }}setup( options=options, description = 'this is a py2exe test', zipfile=None, console = [{'script':''}])
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

options 可以用來指定一些編譯的參數(shù),譬如是否壓縮,是否打包為一個(gè)文件等。

再次運(yùn)行后,發(fā)現(xiàn)所有內(nèi)容打包進(jìn)了一個(gè) helloworld.exe 程序中。

指定額外的文件

一些應(yīng)用程序在運(yùn)行時(shí)需要額外的文件,諸如配置文件、字體、圖標(biāo)。py2exe 并不會(huì)自動(dòng)把他們打包到 dist 目錄,不過可以通過配置參數(shù)來打包。

可以在安裝腳本中用 data_files 可選項(xiàng)指定了那些額外的文件,那么 py2exe 能將這些文件拷貝到 dist 子目錄中。

格式如下:data_files=[(“目的文件夾”,[“文件名”,]), (“目的文件夾”,[“文件名”,]), (“目的文件夾”,[“文件名”,]),]。

比如,我們的程序中有一個(gè)名為 images 的目錄放置了程序需要的圖片,

那么我們就需要在 setup 函數(shù)中配置參數(shù) data_files,這個(gè)參數(shù)包含一個(gè)元組列表 (target_dir,files),其中 target_dir 是指定文件存放的目標(biāo)路徑,files 是這些額外文件的一個(gè)列表。

示例如下:

from distutils.core import setupimport py2exe
 
setup(
 
    windows = ['hello.py],
    data_files = [('images',['images\*.jpg'])]
    )12345678123456781234567812345678

上面的示例中,會(huì)把 images 目錄中所有的 jpg 文件打包到 dist/images 子目錄中。

注意點(diǎn)

1、py2exe 新版本只支持 python3.3 以上,可以使用 pip install py2exe_py2 來安裝兼容 python2 版本;
2、若在 python3.6 版本下運(yùn)行報(bào)錯(cuò),請切換到 python3.4 嘗試;
3、python3 如果是 64 位,生成的 exe 只能在 64 位操作系統(tǒng)下運(yùn)行,使用 32 位 python 可以解決;

4、從 Python 3.3,Windows 在構(gòu)建 Python 時(shí)使用的是 Visual Studio 2010,因此生成后,需要手動(dòng)將 msvcr100.dll 拷到生成目錄下(dist目錄),否則最終的文件運(yùn)行時(shí)可能會(huì)報(bào)錯(cuò);

或者通過 data_files=[('',['MSVCR100.dll'])], 打包其中;

比如,我在 Win10 下打的包,拷貝到 Win7 上,運(yùn)行出錯(cuò):

運(yùn)行出錯(cuò)

出現(xiàn)類似確實(shí) dll 文件的情況,都可以參考這種方法進(jìn)行解決;

總結(jié)

對于 pyinstaller 和 py2exe 兩種把 Python 文件打包成 exe 的可執(zhí)行文件的方法,都有各自的優(yōu)缺點(diǎn)。但是最終目的都是為了在沒有 Python 環(huán)境下的普通 Windows 系統(tǒng)的電腦中可直接運(yùn)行,這點(diǎn)還是很不錯(cuò)的。

大家根據(jù)自己的需要,擇優(yōu)選擇就行了。

參考:
1、http:///Py2exe/
2、https://www.jianshu.com/p/afc56b647866

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多