首页 > 解决方案 > 附加到 PATH 变量和创建一个新变量之间有什么区别?

问题描述

我注意到在 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 变量是否有任何特殊作用,或者我可以为每个目录(如SQLPATHPYTHONPATH等)设置单独的变量JAVAPATH吗?

标签: command-lineenvironment-variables

解决方案


PATH 变量的特殊之处在于它被命令处理器 (cmd.exe) 用来查找任何被调用但在当前目录中不存在的可执行文件。此检索是自动完成的,并按照 PATH 变量中给定的顺序执行。例如,从文件系统的任何位置调用驻留在 Python38 文件夹或 Java 安装文件夹中的任何 .exe 文件,您只需输入文件名(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 等,则不会在此类定义上自动调用此“自动搜索”功能。但是,您可以在批处理文件中使用这些定义来做一些事情,Python 或任何创建这些变量的应用程序都可能使用它们来检索它们的文件。如果此变量丢失并且应用程序专门检查此变量以调用或检索此路径上的某些文件,那么即使将目录添加到 PATH 环境变量中,应用程序也会失败(除非应用程序也尝试仅调用文件并希望它通过 PATH 自动解决)。

在您自己的批处理文件中,您可以执行类似的操作

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

以更结构化的方式构建您的 PATH 变量。请注意,此 PATH 定义仅在批处理文件的范围内有效。它不会改变 Windows 在系统设置中维护的 PATH。


推荐阅读