# Versionsnummern der installierten und aktivierten Add-Ons speichern
addon_versions = {}
for addon_name, addon_module in addons.items():
if addon_module.is_enabled:
addon_version = addon_module.bl_info.get("version", (0, 0, 0))
addon_versions[addon_name] = addon_version
# Speichern der Versionsnummern in einer Datei
with open("addon_versions.txt", "w") as file:
for addon_name, addon_version in addon_versions.items():
file.write(f"{addon_name}: {addon_version}\n")
Funktion aufrufen, um die Add-On-Versionen zu speichern
save_addon_versions()
This ist the Error Message:
Python: Traceback (most recent call last):
File “\Text”, line 20, in
File “\Text”, line 10, in save_addon_versions
AttributeError: ‘Addon’ object has no attribute ‘is_enabled’
For the first you may insert path= … ( but i’m not sure why you want to exec the addons… )
import bpy
import os
def save_addon_versions():
addons_folder = bpy.utils.user_resource('SCRIPTS', path="addons")
addon_versions = {}
for file_name in os.listdir(addons_folder):
if file_name.endswith(".py"):
file_path = os.path.join(addons_folder, file_name)
addon_name = os.path.splitext(file_name)[0]
with open(file_path, "r", encoding="utf-8") as file:
addon_code = compile(file.read(), file_path, 'exec')
addon_globals = {}
addon_locals = {}
exec(addon_code, addon_globals, addon_locals)
addon_info = addon_locals.get("bl_info", {})
addon_version = addon_info.get("version", (0, 0, 0))
addon_versions[addon_name] = addon_version
with open("addon_versions.txt", "w") as file:
for addon_name, addon_version in addon_versions.items():
file.write(f"{addon_name}: {addon_version}\n")
save_addon_versions()
for the second:
import bpy
def save_addon_versions():
# Alle installierten Add-Ons auflisten
addons = bpy.context.preferences.addons
# Versionsnummern der installierten und aktivierten Add-Ons speichern
addon_versions = {}
for addon_name, addon_module in addons.items():
if addon_module.is_enabled:
addon_version = addon_module.bl_info.get("version", (0, 0, 0))
addon_versions[addon_name] = addon_version
# Speichern der Versionsnummern in einer Datei
with open("addon_versions.txt", "w") as file:
for addon_name, addon_version in addon_versions.items():
file.write(f"{addon_name}: {addon_version}\n")
#Funktion aufrufen, um die Add-On-Versionen zu speichern
save_addon_versions()
it seem to be that the addon.items() are a list of for example ('mesh_tools', <bpy_struct, Addon("mesh_tools") at 0x7fa77e4zzzz>)
so the first is the name (as you used) the second is the struct class bpy.types.Addon(bpy_struct)
…so it must be further “selected”… (?)