В чем разница между привязкой к переменной PATH и созданием новой? - PullRequest
0 голосов
/ 07 апреля 2020

Я заметил, что во время некоторой установки Python была создана новая переменная среды с именем PYTHONPATH.

В каждом уроке, который я когда-либо наблюдал, метод настройки использования командной строки состоял в том, чтобы прикрепить каталог файла .exe к переменной среды PATH с помощью точки с запятой:

%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
C:\Program Files\Python38;
C:\Program Files\Python38\Scripts;
%PyCharm Community Edition%;
C:\Users\WNeill\AppData\Roaming\npm;
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin; 
C:\Program Files\MySQL\MySQL Server 8.0\bin 

Однако, поскольку я устранял некоторые проблемы с запуском MySQL из командной строки, я заметил, что есть отдельная переменная PYTHONPATH. Он ссылается на каталог 32-битной версии python, которая больше не существует на моем компьютере.

Это приводит меня к вопросу, делает ли переменная PATH что-то особенное, или я могу иметь отдельные переменные для каждого каталога как SQLPATH, PYTHONPATH, JAVAPATH et c?

1 Ответ

1 голос
/ 24 апреля 2020

Переменная PATH отличается тем, что используется командным процессором (cmd.exe) для поиска любых исполняемых файлов, которые вызываются, но не существуют в текущем каталоге. Этот поиск выполняется автоматически и выполняется в порядке, указанном в переменной PATH. Например, для вызова любого файла .exe, который находится в папке Python38 или в папке установки Java, из любой точки вашей файловой системы, вы можете просто ввести имя файла (например, javac myfile.java) и нажать клавишу Enter, чтобы запустить его (при условии, что установочный каталог Java является частью переменной PATH.
Вы можете попробовать поиграть с where в командной строке, чтобы получить представление о том, какой исполняемый файл действительно вызывается, если вы просто вводите имя файла без явного дорожка. Введите where /? в командной строке, чтобы получить описание справки. Например, where java должен давать вам путь, например C:\Program Files\Java\Java 1.8\java.exe или что-то в этом роде.
Функциональность PATH - это та же самая причина, по которой можно просто набрать calc в командной строке и увидеть, как вызывается приложение калькулятора. Это потому, что обычно C:\Windows\System32\ является частью PATH, а calc.exe находится в этом каталоге.

Если вы определяете свои собственные переменные окружения, такие как PYTHONPATH et c. эта функция «автоматического поиска» не будет вызываться автоматически при таких определениях. Однако вы можете использовать эти определения внутри ваших пакетных файлов для выполнения каких-либо задач, а также Python или любое другое приложение, которое создает эти переменные, может использовать их для извлечения своих файлов. Если эта переменная будет отсутствовать, и приложение будет проверять эту переменную специально для вызова или извлечения некоторых файлов по этому пути, тогда приложение не сможет работать, даже если каталог был добавлен в переменную среды PATH (если приложение также не пытается просто вызвать файл и надеется, что он разрешается через PATH автоматически).

В своем собственном пакетном файле вы можете сделать что-то вроде

SET JAVAPATH=....
SET PYTHONPATH=....
SET PATH=%JAVAPATH%;%PYTHONPATH%

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

...