我有一个简单的 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 文件类型。