Anaconda/Python 站点包子文件夹名称中带有波浪号 - 它们是啥?

Posted

技术标签:

【中文标题】Anaconda/Python 站点包子文件夹名称中带有波浪号 - 它们是啥?【英文标题】:Anaconda/Python site-packages subfolders with tilde in name - what are they?Anaconda/Python 站点包子文件夹名称中带有波浪号 - 它们是什么? 【发布时间】:2019-08-29 03:36:24 【问题描述】:

今天去修改matplotlib的配置。搜索matplotlibrc 发现我有两个:

查看site-packages 文件夹,我发现很多包的名称中都有波浪号:

~klearnsklearn ,但还有另一个 sklearn~atplotlib 也是 matplotlib,更改日期是 2018-11 ~-tplotlib 的更改日期是 2019-3.15 matplotlib的更改日期是2019-3.28(我最近确实更新了matplotlib)

这些波浪号名称包是用来做什么的?我可以安全地删除它们吗?

【问题讨论】:

在 Windows 约定中,以 ~ 开头的目录/文件主要是备份。不确定anaconda是否也是这种情况。您可以尝试将目录剪切粘贴到另一个目录,看看是否一切正常。 @Taegyung Alteady 测试,删除后正常。但它不应该像这样保留旧包。恐怕他们还有其他用处。 您可以通过conda clean --all --dry-run查看 【参考方案1】:

您是否有可能使用 pip 安装了这些特定的软件包?如果是这样,那么损坏的目录可能是 pip 在卸载包时(或在卸载包以准备更新包时)创建的临时目录。

我翻了一下pip源码,发现this snippet显然只用于卸载包:

class AdjacentTempDirectory(TempDirectory):
    """Helper class that creates a temporary directory adjacent to a real one.
    Attributes:
        original
            The original directory to create a temp directory for.
        path
            After calling create() or entering, contains the full
            path to the temporary directory.
        delete
            Whether the directory should be deleted when exiting
            (when used as a contextmanager)
    """
    # The characters that may be used to name the temp directory
    # We always prepend a ~ and then rotate through these until
    # a usable name is found.
    # pkg_resources raises a different error for .dist-info folder
    # with leading '-' and invalid metadata
    LEADING_CHARS = "-~.=%0123456789"

    ...

如果这些文件是这样的,那么您可以安全地删除它们。

【讨论】:

以上是关于Anaconda/Python 站点包子文件夹名称中带有波浪号 - 它们是啥?的主要内容,如果未能解决你的问题,请参考以下文章

[ZZ] 如何在多版本anaconda python环境下转换spyder

如何在我的项目分发中包含包子文件夹?

Anaconda / Python:更改 Anaconda 提示用户路径

访问包子目录中的数据[重复]

JAVA 多线程实现包子铺(买包子,吃包子)

simpleITK 与 anaconda python