一个用于确定适当的平台特定目录的小型Python模块,例如“用户数据目录”。
项目描述
问题
你的应用程序应该使用哪个目录来存储用户数据?如果在Mac OS X上运行,你应该使用
~/Library/Application Support/<AppName>
如果在Windows上(至少是英文Win XP),那应该是
C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
或者可能是
C:\Documents and Settings\<User>\Application Data\<AppAuthor>\<AppName>
用于漫游配置文件,但这又是另一个故事了。
在Linux(和其他类Unix系统)上,根据XDG规范,目录是
~/.local/share/<AppName>
appdirs 来拯救
这种类型的事情正是appdirs模块的作用所在。appdirs将帮助您选择适当的
用户数据目录(user_data_dir)
用户配置目录(user_config_dir)
用户缓存目录(user_cache_dir)
站点数据目录(site_data_dir)
站点配置目录(site_config_dir)
用户日志目录(user_log_dir)
以及
是一个单模块,因此其他Python包可以包含它们自己的私有副本
对使用的目录名有一定的观点。在文档和代码中寻找“OPINION”,以了解何时应用了观点。
一些示例输出
在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'
在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'
在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为了方便
>>> 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'
按版本隔离
如果您正在使用多个版本的您的应用程序,并且希望能够并行运行,那么您可能想要对这些目录进行版本隔离
>>> 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'
appdirs 更新日志
appdirs 1.4.4
[PR #92] 不要从setup.py导入appdirs
项目正式划分为稳定版,这对于包括ActivePython等在内的其他发行版非常重要。
几个增量版本中的第一个,用于赶上维护。
appdirs 1.4.3
[PR #76] Python 3.6 无效转义序列弃用修复
Python 3.6 支持修复
appdirs 1.4.2
[PR #84] 允许不使用setuptools进行安装
[PR #86] 修复setup.py描述中的字符串分隔符
添加Python 3.6支持
appdirs 1.4.1
[问题 #38] 修复Windows Py3上的_winreg导入
[问题 #55] 使appname成为可选的
appdirs 1.4.0
[PR #42] 在Windows上AppAuthor现在是可选的
[问题 41] 在Windows、Mac和类Unix平台上支持Jython。Windows支持需要JNA。
[PR #44] 修复site_config_dir方法的错误行为
appdirs 1.3.0
[Unix,问题 16] 遵守XDG标准,而不是破坏所有人的标准
[Unix] 移除不必要的字母大小写变换,因为*nix系统通常是大小写敏感的,所以变换是不明智的
[Unix] 修复了site_data_dir中的完全错误的行为,根据XDG_DATA_DIRS返回结果,并留出空间以尊重指定XDG_DATA_DIRS为多值变量的标准
[问题 6] 添加根据XDG规范在*nix上不同的*_config_dir,在Windows和Mac上返回相应的*_data_dir
appdirs 1.2.0
[Unix] 将user_log_dir放在Unix的cache目录下。这似乎更典型。
[问题 9] 在py3k上使unicode工作。
appdirs 1.1.0
[问题 4] 添加AppDirs.user_log_dir。
[Unix,问题 2,问题 7] appdirs现在遵守XDG基本目录规范。
[Mac,问题 5] 修复Mac上的site_data_dir()。
[Mac] 放弃使用‘Carbon’模块,改用硬编码的路径;现在支持Python3。
[Windows] 默认在Windows上向user_cache_dir追加“Cache”。使用opinion=False选项来禁用此功能。
添加appdirs.AppDirs便利类。用法
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0") >>> dirs.user_data_dir '/Users/trentm/Library/Application Support/SuperApp/1.0'
[Windows] cherry-pick Komodo的更改,将路径降级到Windows短路径,如果存在高位字符。
[Linux] 将Linux上的默认user_cache_dir()改为单个,例如“~/.superapp/cache”。
[Windows] 向user_data_dir()添加roaming选项(仅适用于Windows)并将默认的user_data_dir行为更改为使用一个非roaming配置文件目录(CSIDL_LOCAL_APPDATA而不是CSIDL_APPDATA)。为什么?因为大型的roaming配置文件可能导致登录速度问题。这种“仅在注销时同步”的行为可能会导致appdata信息中的惊喜。
appdirs 1.0.1(从未发布)
本变更日志始于2010年7月27日。在此之前,该模块起源于Komodo产品中的applib.py,然后是applib/location.py(由PyPM在ActivePython中使用)。这基本上是applib.py 1.0.1和applib/location.py 1.0.1的分支。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
appdirs-1.4.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41 |
|
MD5 | d6bca12613174185dd9abc8a29f4f012 |
|
BLAKE2b-256 | d7d805696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40 |
appdirs-1.4.4-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 |
|
MD5 | 1d638a5913a8d8ed8e7c7d789ece149c |
|
BLAKE2b-256 | 3b002344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324 |