python不是内部命令或外部命令,也不是可运行的程序或批处理文件,这个提示好多人遇见过,但是网上好多回答都说只要配一下环境变量就好了,并没人讲过这个提示本身是什么意思,还有系统在哪种情况下会有这样提示?这些都忽略了,这次是python给出的提示,下次java 或者其他程序,或者在linux系统有这样相同的提示,你可能还得去百度;
先看提示本身,不是内部命令或外部命令是啥意思? 从字面我们可以知道,命令是分为内部命令和外部命令的,在linux中,内部命令是指shell自带的命令,相当于是系统内置的命令,而且系统已经为这些命令配置好了环境变量,比如cd命令,或windows下的ping, ipconfig等可以直接使用;而外部命令是指用户自己额外安装的命令,比如python,java等,系统并不知道你将来会安装什么程序(也叫命令),安装在什么路径下,所以你安装python后在cmd下直接输入python,会给出‘不是内部命令或外部命令’的提示,这时需要你告诉系统,将要运行的python程序的安装路径是在D:Python3.6Python36,告诉了以后,每当你在cmd窗口下只输一个python,那么系统就会去D:Python3.6Python36目录找到python.exe并运行它;
理解了上面的原理,那还有个什么问题,你以什么方式告诉系统,你新安装的程序的所以路径是什么呢?这个不同的操作系统具体的操作是不一样的,先以win10为例,win10可以在控制面板系统和安全系统高级系统设置高级环境变量中设置,或者使用其他简单的命令在命令行设置;
linux下的环境变量分为3种,分别为系统级别的环境变量、用户级别的环境变量和shell级别的环境变量,其实区别就是环境变量的使用范围,具体可以看我的另一篇
总结,出现不是内部命令或外部命令的提示,大概率都是环境变量出问题,从环境变量入手解决,环境变量就是你安装的程序的路径,如果不想设置环境变量,其实也可以给它补全路径后再执行,也是可以的,只要保证系统可以从这个路径找到这个程序即可
以下为补充内容,想了解的读者可以看:
补充1. win10系统的内部命令,也有配环境变量吗? 答案是有,比如常用的ping 命令,ipconfig命令,如下图,可以先使用where 命令看一下ping和ipconfig分别安装在哪里
然后,我们去该路径下找一下有没有这2个程序,如图是有的;
最后,我们去验证一下系统中有没有这2个命令的环境变量,可以看到是有system32这个路径的(为什么是不C:WindowsSystem32呢,因为把C:Windows用变量%SystemRoot%代替了),也就是说,当你输入ping时,系统会在环境变量中的所有的路径中去找这个PING.exe程序,最后在C:WindowsSystem32目录下找到了PING.exe程序