【问题标题】:Meshlab script works from Python venv, but not after pyinstallerMeshlab 脚本适用于 Python venv,但不适用于 pyinstaller
【发布时间】: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


    【解决方案1】:

    我能够通过使用 cx_Freeze 而不是 pyinstaller 来实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多