Install & Compatibility
Where this runs
tested against v6.0.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.920 runs
installs and imports cleanly · install 0.0s · import 0.000s · 62.6MB
glibcpy 3.10–3.920 runs
installs and imports cleanly · install 2.1s · import 0.000s · 62MB
60MB installed
● package 60MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
load
✓ from pyassimp import load
✗ from pyassimp import load
Loads a basic Wavefront OBJ file, demonstrates accessing mesh data (vertices and faces), and ensures proper scene release. It includes common post-processing flags for triangulation and normal generation.
import os
from pyassimp import load, postprocess
# Create a dummy model file for demonstration
dummy_model_content = """
# Wavefront .obj file
# A simple triangle
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 0.0 1.0 0.0
f 1 2 3
"""
model_path = 'dummy_triangle.obj'
with open(model_path, 'w') as f:
f.write(dummy_model_content)
try:
# Load a 3D model with basic post-processing
# Use aiProcess_Triangulate to ensure all faces are triangles
# Use postprocess.aiProcess_GenNormals to generate smooth normals if not present
scene = load(model_path, processing=postprocess.aiProcess_Triangulate | postprocess.aiProcess_GenNormals)
print(f"Successfully loaded model: {model_path}")
print(f"Number of meshes in scene: {len(scene.meshes)}")
if scene.meshes:
mesh = scene.meshes[0]
print(f"First mesh has {len(mesh.vertices)} vertices and {len(mesh.faces)} faces.")
if mesh.vertices:
print(f"First vertex: {mesh.vertices[0]}")
if mesh.faces:
print(f"First face (indices): {mesh.faces[0]}")
# It's good practice to release the scene explicitly when done
scene.release()
except Exception as e:
print(f"Error loading model: {e}")
finally:
# Clean up the dummy model file
if os.path.exists(model_path):
os.remove(model_path)
Debug
Known issues
gotchaDirect modification of scene data loaded via pyassimp (and thus cmeel-assimp) and subsequent export may not be reflected. The library is primarily designed for importing and reading, not for in-place modification and export.fixFor complex scene manipulations or exports after modification, consider using other 3D libraries or a different approach for editing the model data outside of pyassimp's scene structure before re-exporting.
affects: All known versions of pyassimp and cmeel-assimp
breakingAssimp C++ library versions, particularly around 6.0.0, introduced API changes (e.g., in enums). While cmeel-assimp aims to provide compatible Python bindings, direct usage of underlying C++ Assimp concepts or older Python binding patterns might break.fixRefer to the official pyassimp and Assimp documentation for updated API usage. Ensure your code aligns with the Python interface provided by cmeel-assimp's wrapped Assimp version.
affects: 6.0.0 and newer of the underlying Assimp C++ library; potentially affecting cmeel-assimp 6.0.x
gotchaAlthough cmeel-assimp aims to bundle the Assimp C++ shared library, some exotic environments or custom builds might still encounter issues where the shared library (DLL on Windows, .so on Linux, .dylib on macOS) is not found.fixIf 'library not found' errors occur after installation, verify system PATHs or LD_LIBRARY_PATH (Linux) / DYLD_LIBRARY_PATH (macOS) to ensure the Assimp shared library is discoverable. Re-installing in a clean environment or consulting `cmeel` documentation for debugging bundled libraries might be necessary.
affects: All versions
Upgrade
Version history
6.0.5latest on PyPI · released May 20, 2026
Audit
Dependencies
No dependency data recorded yet.