跳转到主要内容

一个用于确定适当的平台特定目录的小型Python模块,例如“用户数据目录”。

项目描述

https://secure.travis-ci.org/ActiveState/appdirs.png

问题

你的应用程序应该使用哪个目录来存储用户数据?如果在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(由PyPMActivePython中使用)。这基本上是applib.py 1.0.1和applib/location.py 1.0.1的分支。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

appdirs-1.4.4.tar.gz (13.5 kB 查看哈希值)

上传时间: 源代码

构建发行版

appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB 查看哈希值)

上传时间: Python 2 Python 3

支持