簡體   English   中英

帶有 VTK 的 Python 可執行文件……pyinstaller、py2exe、cx_freeze 等

[英]Python executable with VTK… pyinstaller, py2exe, cx_freeze etc

我已經使用 pyqt 在 python 中構建了一個 gui,它導入了 VTK。 我沒有任何運氣讓 py2exe、pyinstaller cx_freeze 等使用它......我使用 pyinstaller 說出以下內容時出現錯誤:

vtk.__helper.LinkError: No module named vtkFilteringPythonSIP

我已經設法使用 pyinstaller 制作不包含 vtk 代碼的可執行文件,所以我目前傾向於這樣做,但是如果有人可以幫助我編寫代碼來實現這一點: http ://www.vtk.org/ Wiki/VTK/Examples/Python/Widgets/EmbedPyQt代碼作為可執行文件工作,那么我將永遠感激,但它已經完成了。 我已經嘗試將它抱怨的文件添加到 pyinstaller 掛鈎,但仍然沒有運氣。 是否有修復此錯誤的舊/開發版本? 在信息高速公路上找不到任何解決方案,盡管我在同一條船上找到了人。 我正在使用最新版本的 Python (X,Y)。

如果有人遇到同樣的問題,我設法通過執行以下操作使我的代碼正常工作:

  • 在 pyinstaller hooks 文件夾中,將“hook-vtkpython.py”重命名為“hook-vtk.py”

然后我在運行由 pyinstaller 生成的關於無法找到名為 QtOpenGL 的模塊的可執行文件時遇到不同的錯誤。 這發生在名為 __helper.py 的站點包中 vtk 文件夾中的文件中。 我只是注釋掉了最后兩行以去除它的牙齒。

我還更改了我的代碼,這樣我就不再導入所有的 vtk,而是導入了我需要的位。 不確定是否只有第一步或兩個步驟是解決問題所必需的,但他們/它確實解決了。 問題出在 Python (x,y) 2.7.5.1 上。 你的旅費可能會改變。

我沒有足夠的代表發表評論,所以我只是回應。 我想補充一點,在2021 年,這仍然是一個可行的解決方案。 我嘗試構建一個 Qt-vtk-UI 並努力構建它幾個小時。 感謝 Peter Greaves,重命名鈎子文件對我有用。

我正在使用帶有 Python 3.6.12、PyQt5 (5.12.2) 和 vtk 9.0.1 的虛擬 conda 環境。 使用默認安裝運行 pyinstaller 會引發錯誤,例如“vtk 沒有屬性 vtk.qt”或“vtkmodules.all 沒有屬性 vtkmodules.all.qt”,這是在導入 QVTKRenderWindowInteractor 時查找的。 我嘗試使用像這里這樣的隱藏導入,但僅憑這一點並不能解決問題。 與重命名 vtk-hook 的組合有效。

暫無
暫無

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

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