从Windows shell调用Anaconda Python时导入失败
我想从Windows shell中调用我的Anaconda Python。目标是最终使用系统调用从MATLAB调用它,因此我必须使用普通的Windows shell,而不是“Anaconda提示符” 我有一个简单的Python脚本,我想运行它,但它没有通过import语句:从Windows shell调用Anaconda Python时导入失败,python,cmd,anaconda,Python,Cmd,Anaconda,我想从Windows shell中调用我的Anaconda Python。目标是最终使用系统调用从MATLAB调用它,因此我必须使用普通的Windows shell,而不是“Anaconda提示符” 我有一个简单的Python脚本,我想运行它,但它没有通过import语句: > "C:\ProgramData\Anaconda3\python.exe" lhs.py Traceback (most recent call last): File "lhs.py", line 8, i
> "C:\ProgramData\Anaconda3\python.exe" lhs.py
Traceback (most recent call last):
File "lhs.py", line 8, in <module>
import numpy
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>
from . import _distributor_init
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in <module>
from . import _mklinit
ImportError: DLL load failed: The specified module could not be found.
“C:\ProgramData\Anaconda3\python.exe”lhs.py
回溯(最近一次呼叫最后一次):
文件“lhs.py”,第8行,在
进口numpy
文件“C:\ProgramData\Anaconda3\lib\site packages\numpy\\uuuu init\uuuu.py”,第140行,在
从…起导入\u分发服务器\u初始化
文件“C:\ProgramData\Anaconda3\lib\site packages\numpy\\u distributor\u init.py”,第34行,在
从…起进口
ImportError:DLL加载失败:找不到指定的模块。
编辑
我制作了一个简化的Python脚本(error.py
),其中只包含一行:
导入numpy
我称之为:
“C:\ProgramData\Anaconda3\python.exe”error.py
TL;博士
长话短说 github上有一个报告。我是通过搜索你邮件的最后几行找到的。关于这一点: 第47行,在 将numpy作为np导入 文件“C:\Users\hanna\Anaconda3\lib\site packages\numpy\u init\uuu.py”,第140行,在 从…起导入\u分发服务器\u初始化 文件“C:\Users\hanna\Anaconda3\lib\site packages\numpy\u distributor\u init.py”, 第34行,在 从…起进口 在那里,它们链接到一个:
错误消息,如 英特尔MKL致命错误:无法加载MKL_英特尔线程.dll 原因
NumPy无法加载正确的MKL或英特尔OpenMP运行时 图书馆。这几乎总是由以下两种原因之一造成的:
因此,让我们先试试这个:
C:\\ProgramData\\Anaconda3\\condabin\\activate.bat
conda run -n yourenvironment C:\\path\\to\\your\\pythonfile\\lhs.py
(是,来自普通cmd终端)
如果这似乎有效,您应该能够使用&&
链接这两个命令。我自己的例子如下所示:
F:\Programme\Programme\Anaconda3\condabin\activate.bat && conda run -n textrecognition N:\Temp\temp.py
这可以进一步简化为
F:\Programme\Programme\Anaconda3\condabin\activate.bat textrecognition && python N:\Temp\temp.py
如果问题是第二个,您可以选择在
system32
之前加载conda内容。从以下版本开始,anaconda支持此功能:
Python 2.7.15构建14
Python3.6.8构建7
Python 3.7.2构建8
要激活它,需要将一些环境变量设置为1:
控制环境变量:
CONDA_DLL_SEARCH_MODIFICATION_ENABLE
CONDA_DLL_SEARCH_MODIFICATION_DEBUG
CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_WINDOWS_DIRECTORY
CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_CWD
要在Windows上设置变量,可以使用CLI(Anaconda
例如,提示符)或Windows GUI
CLI:
图形用户界面:
这些值应设置为1以启用它们。例如,在
水蟒提示终端:
set CONDA\u DLL\u SEARCH\u MODIFICATION\u ENABLE=1
您通常使用水蟒环境吗?如果是,这可能就是原因:如果您只调用
python.exe lhs.py
,您将不会为此安装软件包,但它们已安装。这个问题来自numpy自己的初始化序列。我无法复制你的问题。相反,当我像您一样调用anacondy python时,anacondy python可执行文件会告诉我ModuleNotFoundError
(并且在conda env中使用时有效)。你能提供一种复制的方法吗?相关:?我在这里太深了。创建新环境(conda activate myenv
)的效果如何?如何选择合适的名称?Re:“让我们先尝试一下”-conda
在常规cmd shell中不是可识别的命令。好吧,这很奇怪。我像你说的那样运行了activate.bat
。然后我运行了lhs.py(省略了环境参数)。它在我的默认文本编辑器中打开了lhs.py
,而不是运行它。。好的,哈哈。我想在我答案的开头试试我的最新编辑,没有康达run@IlyaRe:“创建一个新环境的效果如何?”我真的建议你多了解一下,但这超出了这个问题的范围。基本上,环境包含您使用的模块,因此您可以为不同的程序提供不同的版本和组合。这是使用蟒蛇的主要原因
F:\Programme\Programme\Anaconda3\condabin\activate.bat textrecognition && python N:\Temp\temp.py
CONDA_DLL_SEARCH_MODIFICATION_ENABLE
CONDA_DLL_SEARCH_MODIFICATION_DEBUG
CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_WINDOWS_DIRECTORY
CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_CWD