首页 > 解决方案 > 如何确定当前的 Python egg 缓存目录?

问题描述

我知道您可以使用环境变量 PYTHON_EGG_CACHE 覆盖 egg 缓存目录,并且您可以在 os.envrion 中查看该覆盖。看起来 Ubuntu 16 上 Python 2.7 的默认设置是/.cache/Python-Eggs

当环境中没有提供 PYTHON_EGG_CACHE 时,您将如何记录鸡蛋缓存的位置?

标签: python

解决方案


setuptools使用PYTHON_EGG_CACHEenvvar 来确定存储已安装的 egg 包的位置。(您可以在此处阅读有关 setuptools的更多信息)

查看github上 setuptools 的当前代码(在当前命名的函数get_default_cache中)表明,如果 envvar 的查找失败,则使用以下公式计算默认值:

from pkg_resources.extern import appdirs

return (
    os.environ.get('PYTHON_EGG_CACHE')
    or appdirs.user_cache_dir(appname='Python-Eggs')
)

appdirs是一个非常简单的 python 库,可以获取标准文件系统位置。逻辑取决于你的user_cache_dir操作系统,并且有很多条件(这里解释的太多了,但如果你有兴趣,逻辑在 github 上

既然你提到了 U16 - 那里的逻辑是:

  • 查找另一个 envvar ( XDG_CACHE_HOME),然后追加/Python-Eggs(例如,如果XDG_CACHE_HOME/tmp/xdg//tmp/xdg/Python-Eggs使用)
  • 如果未定义第二个 envvar,则~/.cache/Python-Eggs使用 then。

推荐阅读