1. 程式人生 > >pyinstaller將含有多個py檔案的python程式做成exe

pyinstaller將含有多個py檔案的python程式做成exe

1.儘量將資原始檔夾放到主資料夾下


2.pyi-makespec main.py
製作spec檔案

3.spec檔案在當前資料夾下,main.spec

編輯spec檔案

# -*- mode: python -*-


block_cipher = None




a = Analysis(['main.py', 'monitor.py',  
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\caption_recognizer.py', 
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\image_recognizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\image_vectorizer.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\network2.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\test_fun.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area_finder.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\unicom_area_include_caption_judger.py',
'E:\\py_project\\test_wpf_python_msg\\src\\recognition_module\\value_vectorizer.py'],
             pathex=['E:\\py_project\\test_wpf_python_msg'],
             binaries=[],
             datas=[('E:\\py_project\\test_wpf_python_msg\\images', 'images'),
('E:\\py_project\\test_wpf_python_msg\\network_parameters', 'network_parameters')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='main',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='main')


(1)第一個列表中寫所有的py檔案,與main一個資料夾的可以直接寫檔名,不一個資料夾的需要寫完整的檔案路徑。

我曾試過在pathex中加入其他檔案的路徑,然後其他py檔案不寫完整路徑,只寫檔名,但是失敗了。

(2)datas是中的元素是tuple型別,tuple的第一個引數是python專案中data檔案(非py檔案)的路徑,

第二個引數是data在exe中儲存此資源的資料夾名,要和專案中的資料夾名相同

(3)最重要: 因為編譯成exe之後的main.exe是在最外層的資料夾的。因為main.py是入口檔案,所以被呼叫的其他py檔案的當前路徑都是main.py檔案的當前路徑。所以在原始碼中就一定要把main.py放到最外層的專案資料夾中,這樣main.py的當前路徑才能和main.exe的路徑保持一致,才能讓其他的py檔案的當前路徑不變,他們才可以找到data資源。

4.用之前配置的spec檔案製作exe: pyinstaller -d main.spec

使用-d製作出來的exe比使用-f的快很多,因為-f把所有dll檔案都打包到一個exe中了。

5.生成的exe在dist資料夾中

相關推薦

pyinstaller含有py檔案python程式做成exe

1.儘量將資原始檔夾放到主資料夾下2.pyi-makespec main.py製作spec檔案3.spec檔案在當前資料夾下,main.spec編輯spec檔案# -*- mode: python -*- block_cipher = None a = Analy

使用pyinstaller打包py檔案時,遇到的no module ...,exe檔案一閃而過,自定義模組打包等問題

1.跳過pyinstaller的安裝,自行谷歌 2. 用cmd cd到你想要打包的py檔案所在的資料夾下面,這裡我的資料夾是ceshi;我需要打包的檔案為main.py、a1.py、a2.py 3.執行命令pyi-makespec main.py,這裡將會根據你的mai

pytest PY檔案執行時共享變數及用fixture和conftest

  1.pytest需要測試多個py檔案,這些檔案有一定的依賴關係,同時執行的時候,需要只執行一次初始化setup,結束再執行一次teardown; 2.多個py檔案需要使用pytest的conftest.py,這個檔名是固定的,在同級目錄還需要__init__.py; 3.由於setup這種經典的

Python一個大檔案按段落分隔為檔案的簡單方法

今天幫同學處理一點語料。語料檔案有點大,並且是以連續兩個換行符作為段落標誌,他想把它按段落分隔成多個小檔案,即每3個段落組成一個新檔案。由於以前沒有遇到過類似的操作,在網上找了一些相似的方法,看起來都有點複雜。所以經嘗試,自己寫了一段程式碼,完美解決問題。 基本思路是,先讀原檔案內容,

python *.py用例檔案生成一個報告--修改HtmlTestRunner

使用python + unittest生成測試報告,目前網上最普遍的是兩個開源方法: HTMLTestRunner HtmlTestRunner 其中第2個是基於第1個實現的;第1個已經不維護了,如果應用到py3,需要自己做一些修改,此外,樣式並不好看( ╯□╰ )。

python——檔案切分為檔案

切分檔案 最近遇到需要切分檔案的需求,當然首選用python來解決,網上搜了下感覺都太複雜了,其實用python自帶函式即可解決。 f = open('path&filename','r') #開啟檔案 i = 0 #設定計數器 while i&l

利用Pythonexcel檔案合併為一個檔案

利用Python,將多個excel檔案合併為一個檔案 思路 利用python xlrd包讀取excle檔案,然後將檔案內容存入一個列表中,再利用xlsxwriter將內容寫入到一個新的excel檔案中。 完整程式碼 # -*- coding: utf

Android視訊檔案拼接為一個檔案

正文 利用android的2個類MediaExtractor(抽取音/視訊幀) + MediaMuxer (將音視訊重新寫入一個多媒體檔案,完成封裝)。 合成檔案為MP4。為啥是MP4? 因為android支援最好的就是這個格式。MediaMuxer的native實現者是MPE

python生成txt檔案

在win下建立多個.txt檔案,參考下面的程式碼 for i in range(1000): i_str = str(i+1) file_name = i_str+ '.txt' f = open('a/'+file_name,'w') f.close() 在

excel按照某一列拆分成單獨檔案

  1.開啟目標excel,按alt + f11鍵開啟VBE視窗 2.選擇插入->模組貼上下面程式碼到編輯器中   程式碼: Sub 保留表頭拆分資料為若干新工作簿() Dim arr, d As Object, k, t, i&,

Java PDF檔案合併為一個PDF

這篇文章主要介紹如何在Java應用程式中來實現合併PDF文件的功能。 使用元件: Spire.PDF for Java 使用以下程式碼前,需要下載Spire.PDF for Java包並解壓縮,然後lib資料夾下,匯入Spire.Pdf.jar包到你的Java應用程式中。 imp

windows系統下 如何.csv檔案合成一個.的詳細步驟。

1、新建一個text文字, 2、複製如下程式碼:  @echo off E: cd csv2 dir copy *.csv 2all_keywords.csv echo @@@@@@@@@@@@@合

如何C檔案連結在一起----Makefile編寫及make指令

需使用GCC編譯器,關於MinGW的安裝指南:https://people.eng.unimelb.edu.au/ammoffat/teaching/20005/Install-MinGW.pdf   單個.c檔案且沒有使用自定義標頭檔案的編譯,在命令列:   &nbs

linux中如何檔案按照指定行數分割成檔案

將一個大檔案分成若干個小檔案方法例如將一個BLM.txt檔案分成字首為 BLM_ 的1000個小檔案,字尾為係數形式,且字尾為4位數字形式先利用wc -l BLM.txt       讀出 BLM.txt 檔案一共有多少行再利用 split 命令split -l 2482 .

python程式檔案場景下出現的bug排查記錄

class a(b):    a.function()   AttributeError::object has no attribute   class b裡頭有定義這個方法的 經排查,原來拷貝程式碼錯誤,b的檔案自身有

關於如何Cpp檔案關聯起來

一、C++編譯模式通常,在一個C++程式中,只包含兩類檔案——.cpp檔案和.h檔案。其中,.cpp檔案被稱作C++原始檔,裡面放的都是C++的原始碼;而.h檔案則被稱作C++標頭檔案,裡面放的也是C++的原始碼。C+ +語言支援“分別編譯”(separate compil

ORACLE 12C 匯入9i匯出的含有使用者的dmp檔案

從EBS 11i 中用system使用者 exp了幾個表,以 user.table 的形式匯出,在12C中進行恢復的時候其中fromuser使用者選擇了system,結果發現沒有匯入成功資料,經過一番折騰發現fromuser必須是表的屬主使用者。記錄

Python同時讀取csv檔案,進行簡單的資料處理

#匯入相應模組 import re import os import pandas as pd import numpy as np# 讀取 10個csv 檔案 path = 'E:/round1/' files = os.listdir(path) files_csv =

Python統計Powerpoint檔案中幻燈片總數量

晚上吃飯時突然想知道自己做了多少頁《Python程式設計》系列教材的配套PPT,於是就有了下面的程式碼,這套PPT綜合了《Python程式設計基礎》(ISBN:9787302410584)、《Python程式設計(第2版)》(ISBN:9787302436515)和《Pyt

如何一個PDF檔案頁面進行的拆分為PDF檔案

     想要將PDF檔案進行拆分其實也算比較簡單的一件事,但是如果我們沒有一個好的工具的話,再簡單的是我們也操作不好,想要將PDF檔案進行頁面的拆分一般都是利用比較專業的PDF編輯器去對它進行操作,小編一般的候想要對