簡體   English   中英

用pyinstaller2.0加載數據文件

[英]Loading datafiles with pyinstaller2.0

我一直在開發一個需要使用pyinstaller加載數據文件(png文件和pot文件)的應用程序,而且我一直在跟蹤temp文件夾的文件,由於某種原因,這些數據文件未添加到temp文件夾中。 我制作了一個小模塊來跟蹤目錄,如下所示:

 import os, sys

 def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

我還修改了規范文件:

a = Analysis(['mks_controller.py'],
             pathex=['C:\\pyinstaller-2.0\\pyinstaller-2.0'],
             hiddenimports=[],
             hookspath=None)
a.datas += [('presentation.potx','C:\\pyinstaller-2.0\\pyinstaller-2.0\\bbpresentation.potx','DATA'),('splat.png','C:\\pyinstaller-2.0\\pyinstaller-2.0\\splat.png', 'DATA'),('logo.png','C:\\pyinstaller-2.0\\pyinstaller-2.0\\logo.png','DATA')]
pyz = PYZ(a.pure)

我使用以下兩個命令構建了exe:

pyinstaller.py --onefile filename.py 
pyinstaller.py --onefile filename.spec

並且數據文件未加載到目錄中。 我還嘗試運行一個日志,該日志顯示此目錄中的所有文件,但未顯示數據文件。 這是它的屏幕截圖:

http://imgur.com/delete/qIff0zZT2Y4ZdKT

我正在使用python 2.7和pyinstaller 2.0。 任何人都知道問題是什么嗎? 提前致謝!

來自最近經歷學習曲線的新手的一些建議。 有很多事情會出錯。 首先讓exe在不包含數據文件的情況下正常工作...

1)您正在使用Windows嗎? 我制作了一個批處理文件來運行該命令(大約運行了數百次,直到我使它運行為止),並且“ pause”將窗口保持打開狀態以查看錯誤消息。

pyinstaller.py --onedir filename.py
pause

2)我使用--onedir。 無論如何,一個文件要花費一些時間才能解壓縮所有資源,因此在測試過程中浪費了時間。 我將所有數據文件放在驅動器上的單獨目錄中進行測試,並在程序中使用了絕對路徑。 如果您仍然無法使一個文件正常工作,則可以將它們手動包含在dist目錄中,並在以后的程序中相應地設置相對路徑。 解決有關編輯規范文件並將所有內容打包到一個文件之前的其他錯誤。

3)我不擔心編輯規范文件,因為我沒有包含數據文件!

4)我也通過一個批處理文件運行了可執行文件(因為不是菜鳥,不得不一遍又一遍地運行它),再次使用“ pause”命令,使窗口保持打開狀態,您可以讀取錯誤。

5)最后,要修復錯誤,我不得不切換到最新的pyinstaller開發代碼 (修復了“ pythoncom”錯誤)。 開發代碼似乎更好地幫助調試,因為它給出的警告更少。 我還必須將模塊(在我的情況下為pyproj)更新為最新版本。 我建議您要修復已安裝模塊中的錯誤的第一件事就是更新它們。 各種模塊維護人員可能知道pyinstaller遇到的任何問題,並且可能已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM