簡體   English   中英

使用PyInstaller時出錯

[英]Error using PyInstaller

我正在嘗試使用PyInstaller創建一個獨立的OSX應用程序,它運行我已經制作的GUI。 當我在終端中輸入以下內容時:

pyinstaller gui.py

一切似乎都有效,直到我收到以下錯誤:

File "/Users/username/anaconda/bin/PyInstaller", line 11, in <module>
    sys.exit(run())
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/__main__.py", line 90, in run
run_build(pyi_config, spec_file, **vars(args))
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/build_main.py", line 788, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), 
kw.get('clean_build'))
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/build_main.py", line 734, in build
exec(text, spec_namespace)
File "<string>", line 16, in <module>
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/build_main.py", line 212, in __init__
self.__postinit__()
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/datastruct.py", line 178, in __postinit__
self.assemble()
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/build_main.py", line 470, in assemble
module_hook.post_graph()
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/imphook.py", line 409, in post_graph
self._load_hook_module()
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/building/imphook.py", line 376, in 
_load_hook_module
self.hook_module_name, self.hook_filename)
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/hooks/hook-PyQt4.py", line 33, in <module>
(qt_menu_nib_dir('PyQt4'), ''),
File "/Users/username/anaconda/lib/python2.7/site-
packages/PyInstaller/utils/hooks/qt.py", line 125, in qt_menu_nib_dir
""".format(namespace, path))

Exception: 
            Cannot find qt_menu.nib for PyQt4
            Path checked: 
   /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/qt_menu.nib

這看起來很奇怪,因為我的名字不是felipe!

我有一些問題:

1)如何在我的計算機上以名稱felipe存在目錄? (我用anaconda安裝qt,我不知道這是否與它有關?)

2)直到我收到錯誤消息,PyInstaller正在查找正確的文件夾。 為什么它開始尋找這個含糊不清的模糊(對我來說模糊)我不知道的目錄?

3)我對目錄很新手,我無法在計算機上的任何地方找到felipe先生。 當我查看Users文件夾時,我只看到自己的用戶和一個空的“Shared”文件夾。 (我不知道共享文件夾的用途和原因。)

4)根據我在互聯網上閱讀的內容,我將qt_menu-nib復制到了應該變成獨立腳本的文件夾中。 為了從這里成功創建獨立,我該怎么辦?

首先,你面對PyInstaller和Anaconda之間的一個已知問題: PyInstaller問題#2135 對話包含您問題的答案。

1)路徑是由Anaconda提供的錯誤構建的Qt二進制文件中的硬編碼,請參閱mrady3的評論

2)PyInstaller加載特定Qt4的鈎子 ,以便找到運行目標應用程序所必需的資源( qt_menu.nib )。 鈎子代碼試圖從Qt二進制文件本身獲取資源目錄的位置。 Qt二進制文件返回錯誤/硬編碼/路徑,並在該過程失敗后。

3)參見第1點),它是維護者機器上的一個文件夾。 Qt假設它的安裝路徑是在建造之前預先設定的; Anaconda存儲庫托管了一個二進制文件,該二進制文件在編譯時考慮了另

4)可能有幾種可能的方法:

嘗試從源代碼安裝PyInstaller的開發者版本,它對上述問題一些修復 然后嘗試再次構建應用程序:

git clone https://github.com/pyinstaller/pyinstaller.git
cd pyinstaller
/Users/username/anaconda/bin/python setup.py sdist
conda install dist/PyInstaller-3.3.dev0.tar.bz2

使用自制軟件安裝Qt4。 本地編譯需要很長時間:

brew install cartr/qt4/qt
find /usr/local/Cellar/qt -name qt_menu.nib

/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/hooks/hook-PyQt4.py編輯Qt4鈎子,並用來自homebrew installation( '/usr/local/Cellar/qt/4.8.7_3/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib' qt_menu_nib_dir('PyQt4')的路徑替換對qt_menu_nib_dir('PyQt4')調用'/usr/local/Cellar/qt/4.8.7_3/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib' )。

或者,只需將qt_menu.nib放入預期位置:

sudo mkdir -p /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/
sudo ln -s /usr/local/Cellar/qt/4.8.7_3/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/

暫無
暫無

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

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