appdirs
A small Python module for determining appropriate " + "platform-specific dirs, e.g. a "user data dir".
A small Python module for determining appropriate " + "platform-specific dirs, e.g. a "user data dir".
To install this package, run one of the following:
.. image:: https://secure.travis-ci.org/ActiveState/appdirs.png :target: http://travis-ci.org/ActiveState/appdirs
What directory should your app use for storing user data? If running on Mac OS X, you should use::
~/Library/Application Support/<AppName>
If on Windows (at least English Win XP) that should be::
C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
or possibly::
C:\Documents and Settings\<User>\Application Data\<AppAuthor>\<AppName>
for roaming profiles <http://bit.ly/9yl3b6>_ but that is another story.
On Linux (and other Unices) the dir, according to the XDG
spec <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>_, is::
~/.local/share/<AppName>
appdirs to the rescueThis kind of thing is what the appdirs module is for. appdirs will
help you choose an appropriate:
user_data_dir)user_config_dir)user_cache_dir)site_data_dir)site_config_dir)user_log_dir)and also:
On Mac OS X::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'/Users/trentm/Library/Application Support/SuperApp'
>>> site_data_dir(appname, appauthor)
'/Library/Application Support/SuperApp'
>>> user_cache_dir(appname, appauthor)
'/Users/trentm/Library/Caches/SuperApp'
>>> user_log_dir(appname, appauthor)
'/Users/trentm/Library/Logs/SuperApp'
On Windows 7::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp'
>>> user_data_dir(appname, appauthor, roaming=True)
'C:\\Users\\trentm\\AppData\\Roaming\\Acme\\SuperApp'
>>> user_cache_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Cache'
>>> user_log_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Logs'
On Linux::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'/home/trentm/.local/share/SuperApp
>>> site_data_dir(appname, appauthor)
'/usr/local/share/SuperApp'
>>> site_data_dir(appname, appauthor, multipath=True)
'/usr/local/share/SuperApp:/usr/share/SuperApp'
>>> user_cache_dir(appname, appauthor)
'/home/trentm/.cache/SuperApp'
>>> user_log_dir(appname, appauthor)
'/home/trentm/.cache/SuperApp/log'
>>> user_config_dir(appname)
'/home/trentm/.config/SuperApp'
>>> site_config_dir(appname)
'/etc/xdg/SuperApp'
>>> os.environ['XDG_CONFIG_DIRS'] = '/etc:/usr/local/etc'
>>> site_config_dir(appname, multipath=True)
'/etc/SuperApp:/usr/local/etc/SuperApp'
AppDirs for convenience::
>>> from appdirs import AppDirs
>>> dirs = AppDirs("SuperApp", "Acme")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp'
>>> dirs.site_data_dir
'/Library/Application Support/SuperApp'
>>> dirs.user_cache_dir
'/Users/trentm/Library/Caches/SuperApp'
>>> dirs.user_log_dir
'/Users/trentm/Library/Logs/SuperApp'
If you have multiple versions of your app in use that you want to be able to run side-by-side, then you may want version-isolation for these dirs::
>>> from appdirs import AppDirs
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp/1.0'
>>> dirs.site_data_dir
'/Library/Application Support/SuperApp/1.0'
>>> dirs.user_cache_dir
'/Users/trentm/Library/Caches/SuperApp/1.0'
>>> dirs.user_log_dir
'/Users/trentm/Library/Logs/SuperApp/1.0'
JNA <https://github.com/twall/jna>_.site_data_dir, return result
based on XDGDATADIRS and make room for respecting the standard which
specifies XDGDATADIRS is a multiple-value variable*_config_dir which are distinct on nix-es, according to
XDG specs; on Windows and Mac return the corresponding *_data_diruser_log_dir under the cache dir on Unix. Seems to be more
typical.unicode work on py3k.AppDirs.user_log_dir.XDG base directory spec
<http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>_.site_data_dir() on Mac.user_cache_dir on Windows by default. Use
opinion=False option to disable this.Add appdirs.AppDirs convenience class. Usage:
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp/1.0'
[Windows] Cherry-pick Komodo's change to downgrade paths to the Windows short paths if there are high bit chars.
user_cache_dir() on Linux to be singular, e.g.
"~/.superapp/cache".roaming option to user_data_dir() (for use on Windows only)
and change the default user_data_dir behaviour to use a non-roaming
profile dir (CSIDL_LOCAL_APPDATA instead of CSIDL_APPDATA). Why? Because
a large roaming profile can cause login speed issues. The "only syncs on
logout" behaviour can cause surprises in appdata info.Started this changelog 27 July 2010. Before that this module originated in the
Komodo <http://www.activestate.com/komodo>_ product as applib.py and then
as applib/location.py
<http://github.com/ActiveState/applib/blob/master/applib/location.py>_ (used by
PyPM <http://code.activestate.com/pypm/>_ in ActivePython
<http://www.activestate.com/activepython>_). This is basically a fork of
applib.py 1.0.1 and applib/location.py 1.0.1.
Summary
A small Python module for determining appropriate " + "platform-specific dirs, e.g. a "user data dir".
Last Updated
Feb 8, 2017 at 03:28
License
MIT
Total Downloads
19