Подпапки сайтов-пакетов Anaconda/Python с тильдой в имени — что это такое?

Сегодня пошел менять конфиг matplotlib. Поиск matplotlibrc показал, что у меня их два:

Скриншот результатов поиска с двумя записями: ‹code›C:\Anaconda3\Lib\site-packages\~-tplotlib\mpl-data‹/code› и ‹code›C:\Anaconda3\Lib\site-packages  \matplotlib\mpl-data‹/code›

Заглянув в папку site-packages, я обнаружил, что в имени многих пакетов есть тильда:

Снимок экрана проводника Windows, показывающий, что пакеты сайта содержат много других папок, начинающихся с символа ‹code›~‹/code›, например ‹code›~klearn‹/code› и ‹code›~yximport‹/code›< /а>

  • ~klearn это sklearn , но есть еще sklearn .
  • ~atplotlib тоже является matplotlib, измененная дата 2018-11
  • ~-tplotlib дата изменена на 2019-3.15
  • Дата изменения matplotlib - 2019-3.28 (недавно я обновил matplotlib)

Для чего используются эти пакеты имен тильды? Могу ли я удалить их безопасно?


person Mithril    schedule 08.04.2019    source источник
comment
По соглашению Windows каталог/файл, начинающийся с ~, в основном является резервным. Не уверен, что это относится и к анаконде. Вы можете попробовать скопировать каталоги в другой и посмотреть, все ли работает нормально.   -  person Ignatius    schedule 08.04.2019
comment
@Taegyung Alteady протестировано, после удаления все в порядке. Но он не должен сохранять старый пакет в таком виде. Боюсь, у них есть какое-то другое применение.   -  person Mithril    schedule 08.04.2019
comment
Вы можете проверить с conda clean --all --dry-run   -  person darthbith    schedule 08.04.2019


Ответы (1)


Возможно ли, что вы установили эти конкретные пакеты с помощью pip? Если это так, то искаженные каталоги, вероятно, являются временными каталогами, которые pip создает при удалении пакета (или при удалении пакета при подготовке к обновлению пакета).

Я просмотрел исходный код pip и нашел этот фрагмент, который явно используется только для удаления пакетов:

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"

    ...

Если это и есть эти файлы, то можете смело их удалять.

person Leo    schedule 14.08.2019