【发布时间】:2021-09-20 04:04:58
【问题描述】:
我有一个简单的 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 文件类型。
【问题讨论】:
标签: pyinstaller pymeshlab