0

我有一个简单的 Python 脚本Mesher.py,它在命令行上采用 Windows 格式的文件名字符串,并在输入点云(.xyz 文件)上运行 MeshLab:

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 可以很好地从 Python 中识别出我的 .xyz 文件,但当相同的脚本包含在 Windows 可执行文件中时却不能?

编辑 当我为我的 .xyz 文件使用固定文件名而不是在命令行上传递它,或者即使我使用 .ply 文件作为输入时,也会发生这种情况。我的脚本的 .exe 版本无法识别标准 MeshLab 文件类型。

4

1 回答 1

0

通过使用 cx_Freeze 而不是 pyinstaller,我能够让它工作。

于 2021-07-19T17:52:46.047 回答