问题的情景是这样的:
在一个涉及到深度学习的图像处理项目之中要用到python,由于python环境复杂,于是采用anaconda进行环境和包管理。
原先用anaconda配好的几个机器学习的环境:
之前调用这几个环境下的python.exe是可以正常执行的,各个环境下的包也都配置好了
刚开始使用下面这个命令是可以正常执行的
K:\Data\anaconda\envs\tensorflow\python.exe
但在调用几次这个python.exe之后,突然就出现调用失败,于是将下面这个批处理执行后,发现
K:\Data\anaconda\envs\tensorflow\python.exe K:\ikkkp_data\lab\TVDS\TVDS-Backend@2023-07-15\ai\tvds-ocr/utils.py K:\ikkkp_data\lab\TVDS\TVDS-Backend@2023-07-15\blob\composite/3907/20220123001_2_3.jpg
这样的错误
很是奇怪,显示
K:\Data\anaconda\envs\tensorflow\python.exe
这个命令拒绝访问。
我怀疑是权限的问题,于是用管理员权限进入powershell和命令行都报了错
遂不是权限的问题
我又想到环境变量的问题
如果想要在任意路径下的终端中执行python,必须要把python的安装路径的下的一系列路径添加到系统环境变量中。
有没有可能是环境变量导致的错误?
我赶紧去看,结果并没有问题。anaconda安装的python一般并不加入环境变量中。
如果是在不行,就只能重装Anaconda了,我配置了很多虚拟环境,重装起来太麻烦了,我是不想重装的。
无意之中看到这个回答,虽然情景不相同,但是给我了一定的提示:
关于python“此应用无法在你的电脑上运行”的错误 - 知乎 (zhihu.com)
于是我打开
K:\Data\anaconda\envs\tensorflow\python.exe
这个命令所在的目录:(怪事发生了!!!)
清楚的看到python.exe是空的,大小是0kb,
打开别的环境
不出所料, python.exe是正常的,
于是把这个文件复制一份过去,因为我的py版本都是安装的一致
哎~不出所料,程序正常了
K:\Data\anaconda\envs\tensorflow\python.exe K:\ikkkp_data\lab\TVDS\TVDS-Backend@2023-07-15\ai\tvds-ocr/utils.py K:\ikkkp_data\lab\TVDS\TVDS-Backend@2023-07-15\blob\composite/3907/20220123001_2_3.jpg
也不报错了
正常的OCR也能执行了!!
那么为什么会出现这个问题呢?
问了gpt:
Q:运行anaconda环境下的python报错 此应用无法在你的电脑上运行,若要找到合适于你的电脑的版本,请咨询发布者 ,检查后发现是python.exe被自动替换,可能是执行.py文件后发生的,为什么呢?
A:可能是依赖项不满足:应用程序可能依赖于某些第三方库或模块,而这些依赖项可能没有正确安装或版本不兼容。你可以使用conda list命令来查看已安装的包列表,并确保所有依赖项都已正确安装。
同时,某些程序可能会修改或替换 python.exe
以满足其自身需求。这通常发生在需要自定义 Python 解释器的特定用例中。