python: почему каталог пользовательских скриптов используется в разных версиях python? - PullRequest
0 голосов
/ 30 октября 2018

С PEP-370 :

каталог пользовательских скриптов

Каталог для двоичных файлов и скриптов. [10] Он используется в версиях Python и в каталоге назначения для сценариев.

Unix (включая Mac)

  ~/.local/bin

Windows

  %APPDATA%/Python/Scripts

Почему он предлагает каталоги пользовательских сайтов для конкретной версии, а не каталоги пользовательских скриптов? Разве скрипты из разных версий Python не будут конфликтовать друг с другом?

Edit. Да, они будут. Я сделал тест с python2-pytest и python3-pytest. При установке обоих в пользовательский каталог с помощью pip один скрипт pytest перезаписал другой без предупреждения.

Кажется, есть соответствующая ссылка, но она мертва:

Дискуссия о каталоге bin http://permalink.gmane.org/gmane.comp.python.devel/91095

1 Ответ

0 голосов
/ 30 октября 2018

Оболочка не поддерживает бинарные версии для каждой версии Python. Существует единственное пространство имен для исполняемых файлов командной строки, используется первое имя, найденное в каталогах, перечисленных в PATH.

Смысл каталога ~/.local/bin в том, что он добавляется в переменную окружения PATH и что скрипты и другие исполняемые файлы помещаются туда для использования в командной строке . А поскольку для таких исполняемых файлов существует только одно пространство имен, нет смысла помещать команды в каталоги для каждой версии.

Вместо этого, проект должен предоставить вам версионные исполняемые файлы. Проект pip использует сценарии setup.py конфигурации до pip, pipX и pipX.Y при установке с Python XY, и поэтому у вас всегда будет более конкретная версия сценария, когда Есть несколько версий Python. И вы также можете использовать модуль в качестве скрипта с pythonX.Y -m pip. Многие инструменты командной строки Python имеют аналогичную поддержку.

Что касается потерянной ссылки GMane (по-прежнему доступно в веб-архиве ); есть и другие архивы обсуждения Python-dev, такие как этот перевод grokbase.com того же поста ; эта дискуссия была о том, в какой каталог помещать скрипты, ~/bin или ~/.local/bin, и никогда не касалась каталогов для каждой версии Python.

...