【问题标题】:Importing of 3D STL Image in Python (ImportError: No module named ascii)在 Python 中导入 3D STL 图像(ImportError: No module named ascii)
【发布时间】:2015-04-15 22:11:22
【问题描述】:

我打算用 Python 为 raspberrypi 编写一个程序,以导入 3D STL 图像。

为此,我搜索了一个名为“numpy-stl”的 Python 库,它适合我的要求。我按照website的说明安装了

sudo pip install numpy-stl

然后尝试从示例中给定Code 运行。

from stl import mesh

# Using an existing stl file:
mesh = mesh.Mesh.from_file('some_file.stl')

# Or creating a new mesh:
VERTICE_COUNT = 100
data = numpy.zeros(VERTICE_COUNT, dtype=Mesh.dtype)
mesh = mesh.Mesh(data, remove_empty_areas=False)

# The mesh normals (calculated automatically)
mesh.normals
# The mesh vectors
mesh.v0, mesh.v1, mesh.v2
# Accessing individual points (concatenation of v0, v1 and v2 in triplets)
mesh.points[0] == mesh.v0[0]
mesh.points[1] == mesh.v1[0]
mesh.points[2] == mesh.v2[0]
mesh.points[3] == mesh.v0[1]

mesh.save('new_stl_file.stl')

但现在我面临以下错误:

Traceback (most recent call last):
  File "/home/pi/checkstl.py", line 1, in <module>
    from stl import stl
  File "/usr/local/lib/python2.7/dist-packages/stl/__init__.py", line 2, in <module>
    import stl.ascii
ImportError: No module named ascii 

谁能指导我如何解决这个错误? 谢谢

【问题讨论】:

  • 您的 numpy-stl 安装似乎有问题。你能运行第一行from stl import mesh吗?
  • @ali_m 我也像这样运行它from stl import mesh,但上面的错误仍然相同
  • 那么您的安装有些问题。尝试删除并重新安装 numpy-stl,看看安装过程中是否出现任何错误消息。

标签: python-2.7 numpy import 3d numpy-stl


【解决方案1】:

更新 numpy-stl 后应该会解决这个问题。 更重要的是,删除任何其他 stl 包 - 否则你会与模块名称发生冲突。 (包 numpy-stl 被导入为import stl。)

如果安装了包stl 0.0.3,请先卸载:

pip uninstall stl

然后包numpy-stl 应该可以按预期工作(即它可以通过import stl 使用),只要它安装:

pip install numpy-stl

【讨论】:

  • 欢迎来到 Stack Overflow!请解释为什么您的解决方案可以解决问题。仅包含基本步骤(即使它们有效)的答案通常不会帮助 OP 理解他们的问题。
  • @SuperBiasedMan:答案实际上是正确的,作者只是安装了两个在命名空间方面发生冲突的包。 PS:我是 numpy-stl 的作者,这不是第一个遇到问题的人
  • @Wolph 需要安装一个包 numpy-stl 以支持 import stl 确实令人困惑 - 并且容易出错,因为还有一个包 stl。你的包的导入应该是import numpy-stl
  • @coproc 会导致错误,numpy-stl 不是有效的导入名称 ;) 理想情况下,应该删除和替换废弃的 stl
  • @Wolph right: numpy-stl 不是一个有效的模块名称......但还有其他选择......例如numpy_stl?
【解决方案2】:

FWIW,您可以对 meshio(我编写的)执行相同的操作,但它适用于各种网格格式。

pip install meshio
import meshio

mesh = meshio.read("input.stl")  # or .off, .vtk, .ply, ...
# mesh.points, mesh.cells, ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2015-09-10
    • 1970-01-01
    • 2011-04-08
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多