Anaconda发行说明中的​​“ PATH env var的精简值”是什么意思?

问题描述

两天前,我在Windows计算机上卸载了“ Anaconda3 5.2.0”并重新安装了“ Anaconda3 2020.07”。根据安装程序的建议,当我去年安装Anaconda3 5.2.0或两天前重新安装Anaconda3 2020.07时,我没有将Anaconda路径添加到系统path环境变量中。当我使用Anaconda Prompt中的python时,事情进展顺利,因为Prompt已将Anaconda目录添加path变量中。

但是,在Anaconda Prompt之外使用Anaconda3 5.2.0和Anaconda3 2020.07时,我发现一个奇怪的不同行为。我有一个bat文件,其中包含一行C:\Anaconda3\python xxx.py,在xxx.py中,我导入了多个Python软件包,其中包括numpy。当我使用Anaconda 5.2.0时,可以通过双击成功执行此bat文件(这相当于在不知道Anaconda路径的普通CMD中运行C:\Anaconda3\python xxx.py)。但是,重新安装Anaconda3 2020.07后,运行此DLL load Failed文件时出现bat错误,因为无法成功导入numpy软件包。

我确定错误是由path变量引起的,我意识到在普通CMD中运行DLL load Failed时出现C:\Anaconda3\python xxx.py错误应该是一个合理的结果,因为{{如果没有将Anaconda目录添加到CMD中的DLL变量中,则找不到1}}。

我的问题是为什么它可以在Anaconda 5.2.0下成功执行。 Anaconda 5.2.0有什么特别之处?该命令为什么可以在普通CMD中找到这些path文件

然后,我检查了蟒蛇的release notes。在Anaconda 5.2.0 part下,我阅读以下内容

Windows安装程序使用PATH env var的精简值,以避免使用现有软件的DLL死机

我想这可能是原因。但是我无法理解DLL的含义。有谁知道Anaconda 5.2.0如何处理a trimmed down value for PATH env var变量,以便python解释器甚至可以在普通CMD中的Anaconda Prompt之外找到正确的path


p.s。

DLL错误并非特定于DLL load Failed软件包。我只是以它为例。

numpy中导入numpy时,错误是(最后一行):

xxx.py

如果在Original error was: DLL load Failed while importing _multiarry_umath: The specified module Could not be found.中导入sqlite3,则错误为(最后一行):

xxx.py

其他软件包也可能导致类似的问题。关键是在Anaconda Prompt外部使用的python解释器(通过编写完整路径ImportError: DLL load Failed while importing _sqlite3: %1 is not a valid Win32 application.,或者如果还安装了Python Launcher则使用C:\Anaconda3\python xxx.py)可以在Anaconda3 5.2下找到正确的py xxx.py .0,但在Anaconda3 2020.07下找不到正确的DLL,尽管在两种情况下Anaconda目录都未添加到系统DLL变量中。


这是path的示例。

xxx.py

解决方法

在这种情况下,精简可能意味着简化,以便更轻松地找出为什么PATH不能帮助您找到所需内容的原因。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...