Скрипт Meshlab работает с Python venv, но не после pyinstaller

У меня есть простой скрипт Python который принимает строки имени файла в формате Windows в командной строке и запускает MeshLab во входном облаке точек (файл .xyz):

      import sys
from pathlib import Path
import pymeshlab as ml

xyz_file = Path(sys.argv[1]).as_posix()
output_file = Path(sys.argv[2]).as_posix()

ms = ml.MeshSet()
ms.load_new_mesh(xyz_file)
ms.load_filter_script('filters.mlx')
ms.apply_filter_script()
ms.save_current_mesh(output_file)

Он отлично работает с интерпретатором Python 3.9.6 в виртуальной среде, но когда я упаковываю его с помощью pyinstaller (также установленного в venv), чтобы сделать из него исполняемый файл Windows, я получаю эту ошибку, когда запускаю .exe с тем же аргументы командной строки:

          Traceback (most recent call last):
      File "Mesher.py", line 9, in <module>
        ms.load_new_mesh(xyz_file)
    pymeshlab.pmeshlab.PyMeshLabException: Unknown format for load: xyz
    [24580] Failed to execute script Mesher

Почему pymeshlab отлично распознает мой файл .xyz из Python, но не тогда, когда тот же сценарий заключен в исполняемый файл Windows?

ИЗМЕНИТЬ Это также происходит, когда я использую фиксированное имя файла для моего файла .xyz, а не передаю его в командной строке, или даже если я использую файл .ply для ввода. Версия моего скрипта .exe не распознает стандартные типы файлов MeshLab.

1 ответ

Я смог заставить это работать, используя cx_Freeze вместо pyinstaller.

Другие вопросы по тегам