{"library":"py3dbp","title":"3D Bin Packing","description":"py3dbp is a Python library for solving the 3D Bin Packing problem, an optimization challenge focused on fitting items of various sizes into a finite number of bins. The current stable version is 1.1.2, released in July 2020. The library appears to be in maintenance mode with infrequent updates.","language":"python","status":"maintenance","last_verified":"Sat May 16","install":{"commands":["pip install py3dbp"],"cli":null},"imports":["from py3dbp import Packer","from py3dbp import Bin","from py3dbp import Item","from py3dbp import Packer, Bin, Item, Painter"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from py3dbp import Packer, Bin, Item\n\n# Initialize packer\npacker = Packer()\n\n# Add bins\npacker.add_bin(Bin('large-box', 12.0, 12.0, 5.5, 70.0))\npacker.add_bin(Bin('medium-box', 11.0, 8.5, 5.5, 70.0))\n\n# Add items\npacker.add_item(Item('item-1', 5.0, 3.0, 2.0, 5.0))\npacker.add_item(Item('item-2', 4.0, 4.0, 3.0, 3.0))\npacker.add_item(Item('item-3', 6.0, 2.0, 1.0, 2.0))\n\n# Pack items into bins\n# Default parameters: bigger_first=False, distribute_items=False, number_of_decimals=3\npacker.pack(bigger_first=True, distribute_items=True)\n\n# Print results\nfor bin_obj in packer.bins:\n    print(f\"\\nBin: {bin_obj.name}, Volume: {bin_obj.get_total_volume()} cubic units, Weight: {bin_obj.get_total_weight()} kg\")\n    print(\"  Fitted items:\")\n    for item in bin_obj.items:\n        print(f\"    - {item.name} (WHL: {item.width}x{item.height}x{item.depth}, Weight: {item.weight}kg)\")\n    print(f\"  Unfitted items: {len(bin_obj.unfitted_items)}\")\n    for item in bin_obj.unfitted_items:\n        print(f\"    - {item.name} (WHL: {item.width}x{item.height}x{item.depth}, Weight: {item.weight}kg)\")","lang":"python","description":"This quickstart demonstrates how to define bins and items, add them to a Packer instance, and then execute the packing algorithm. It also shows how to retrieve the fitted and unfitted items per bin. The `pack` method parameters `bigger_first` and `distribute_items` are highlighted due to their importance in packing strategy.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.1.2","pypi_latest":"1.1.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.4,"avg_import_s":0,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"19.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0,"mem_mb":0.2,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"21.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0,"mem_mb":0.2,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"11.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0,"mem_mb":0.2,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0,"mem_mb":0.2,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"18.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"py3dbp","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0,"mem_mb":0.2,"disk_size":"19M"}]}}