粘贴到 PATH 变量和创建一个新的变量之间有什么区别?

问题描述 投票:0回答:1

我注意到在安装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 等?

command-line environment-variables
1个回答
1
投票

PATH变量的特殊性在于,它被命令处理器(cmd.exe)用来查找任何被调用但在当前目录下不存在的可执行文件。这个检索是自动完成的,并且按照 PATH 变量中给出的顺序执行。例如,从文件系统的任何地方调用驻留在 Python38 文件夹或 Java 安装文件夹中的任何 .exe 文件,你可以只键入文件名 (如 javac myfile.java 例如),然后点击回车键来执行它(假设Java安装目录是PATH变量的一部分)。您可以尝试使用 where 命令行上,如果你只是输入一个没有明确路径的文件名,就可以得到一个关于哪个可执行文件真正被调用的线索。在命令行中输入 where /? 命令行上的帮助说明。例如 where java 应该给你提供这样的路径 C:\Program Files\Java\Java 1.8\java.exe 或什么的。PATH功能也是为什么可以直接输入 calc 到命令行中,并看到计算器应用程序被调用。这是因为通常 C:\Windows\System32\ 是PATH的一部分,并且 calc.exe 是在这个目录中。

如果您定义了您自己的环境变量,如 PYTHONPATH 等,这个 "自动搜索 "功能将不会在这些定义上自动调用。然而,您可以在您的批处理文件中使用这些定义来做一些事情,而且 Python 或任何创建这些变量的应用程序都可以使用它们来检索它们的文件。如果这个变量会缺失,而应用程序专门检查这个变量来调用或检索这个路径上的一些文件,那么即使这个目录被添加到PATH环境变量中,应用程序也会失败(除非应用程序也试图仅仅调用一个文件,并希望它通过PATH自动解析)。

在你自己的批处理文件中,你可以做这样的事情

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

来以更有条理的方式建立您的 PATH 变量。请注意,这个PATH的定义只在您的批处理文件的范围内有效,它不会改变Windows在系统设置中维护的PATH。它不会改变Windows在系统设置中维护的PATH。

© www.soinside.com 2019 - 2024. All rights reserved.