appdirs
Cross-platform application directory locations for Python — determines correct OS-specific paths for user data, config, cache, and log directories. appdirs features: user_data_dir() for persistent user data, user_config_dir() for configuration files, user_cache_dir() for cached data, user_log_dir() for logs, site_data_dir() for system-wide data, site_config_dir() for system-wide config, AppDirs class for grouped access, author parameter for Windows namespacing, version parameter for versioned directories, and consistent behavior across Windows/macOS/Linux. Note: platformdirs is the maintained fork of appdirs.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
Path utility library with no network calls. Platform directories returned by appdirs are user-specific and appropriate for config storage. Do not store secrets in cache_dir — it may be cleaned by OS. Validate returned paths before use if running with untrusted environment variables.
⚡ Reliability
Best When
Legacy code using appdirs or quick cross-platform directory lookup — for new projects, prefer platformdirs which is the actively maintained fork of appdirs with identical API.
Avoid When
Starting new projects (use platformdirs instead), temp files (use tempfile), or system-wide directories (permissions issues).
Use Cases
- • Agent config storage — from appdirs import user_config_dir; config_dir = user_config_dir('MyAgent', 'MyOrg'); config_path = os.path.join(config_dir, 'config.json'); os.makedirs(config_dir, exist_ok=True) — cross-platform config path; agent stores config in correct OS location: ~/.config/myagent/ on Linux, ~/Library/Application Support/ on macOS, %APPDATA% on Windows
- • Agent cache directory — from appdirs import user_cache_dir; cache_dir = user_cache_dir('MyAgent'); cache_file = os.path.join(cache_dir, 'api_cache.sqlite'); os.makedirs(cache_dir, exist_ok=True) — cache in correct location; agent caches API responses in OS-appropriate cache dir; OS may clean cache dir on low disk space (especially macOS)
- • Agent data directory — from appdirs import AppDirs; dirs = AppDirs('MyAgent', 'MyOrg'); data_file = os.path.join(dirs.user_data_dir, 'history.db') — persistent data storage; agent stores history database in user data dir; data dir unlike cache dir is not automatically cleaned
- • Agent log directory — from appdirs import user_log_dir; log_dir = user_log_dir('MyAgent'); log_file = os.path.join(log_dir, 'agent.log') — OS-appropriate log location; agent log files stored in system log convention; /var/log/ on Linux system-wide, ~/.local/share/myagent/log/ for user logs
- • Agent grouped dirs — from appdirs import AppDirs; dirs = AppDirs('MyAgent', 'MyOrg', version='1.0'); print(dirs.user_data_dir, dirs.user_config_dir, dirs.user_cache_dir) — all directories from single AppDirs instance; agent application setup creates all needed directories with consistent naming
Not For
- • Maintained library — appdirs is unmaintained; use platformdirs (the maintained fork) instead for new projects
- • Temp files — appdirs doesn't provide temp directory; use Python's tempfile module
- • System-wide config — appdirs site_data_dir requires admin privileges on most systems; for system config prefer user_config_dir
Interface
Authentication
No auth — platform directory utility library.
Pricing
appdirs is MIT licensed. Free for all use.
Agent Metadata
Known Gotchas
- ⚠ appdirs is unmaintained — last release was 2018; use platformdirs instead for new projects: pip install platformdirs; platformdirs has identical API with added XDG compliance; agent new code should import from platformdirs not appdirs
- ⚠ appdirs does not create directories — user_data_dir() returns path string only; agent code must create the directory: os.makedirs(dirs.user_data_dir, exist_ok=True); missing makedirs causes FileNotFoundError when writing to the directory
- ⚠ macOS uses Library/Application Support not ~/.config — on macOS user_config_dir returns ~/Library/Application Support/AppName not ~/.config/AppName; agent code expecting Linux XDG conventions gets different path on macOS; use platformdirs which supports XDG_* environment variable overrides
- ⚠ Windows requires both appname and appauthor — on Windows the path is %APPDATA%\AppAuthor\AppName; calling user_data_dir('MyApp') without author returns %APPDATA%\MyApp\MyApp on some versions; always provide both: user_data_dir('MyApp', 'MyOrg') for consistent Windows paths
- ⚠ roaming vs non-roaming on Windows — user_data_dir() uses %APPDATA% (roaming, synced); user_data_dir(roaming=False) uses %LOCALAPPDATA% (local, not synced); agent code storing large data should use roaming=False to avoid syncing large caches across Windows machines
- ⚠ Environment variable overrides not supported — unlike platformdirs, appdirs does not respect XDG_DATA_HOME, XDG_CONFIG_HOME etc.; agent running in containers or custom environments cannot override paths via env vars; use platformdirs for XDG compliance
Alternatives
Full Evaluation Report
Comprehensive deep-dive: security analysis, reliability audit, agent experience review, cost modeling, competitive positioning, and improvement roadmap for appdirs.
AI-powered analysis · PDF + markdown · Delivered within 30 minutes
Package Brief
Quick verdict, integration guide, cost projections, gotchas with workarounds, and alternatives comparison.
Delivered within 10 minutes
Score Monitoring
Get alerted when this package's AF, security, or reliability scores change significantly. Stay ahead of regressions.
Continuous monitoring
Scores are editorial opinions as of 2026-03-06.