python不是內部命令或外部命令,也不是可運行的程序或批處理文件,這個提示好多人遇見過,但是網上好多回答都說只要配一下環境變量就好了,並沒人講過這個提示本身是什么意思,還有系統在哪種情況下會有這樣提示?這些都忽略了,這次是python給出的提示,下次java 或者其他程序,或者在linux系統有這樣相同的提示,你可能還得去百度;
先看提示本身,不是內部命令或外部命令是啥意思? 從字面我們可以知道,命令是分為內部命令和外部命令的,在linux中,內部命令是指shell自帶的命令,相當於是系統內置的命令,而且系統已經為這些命令配置好了環境變量,比如cd命令,或windows下的ping, ipconfig等可以直接使用;而外部命令是指用戶自己額外安裝的命令,比如python,java等,系統並不知道你將來會安裝什么程序(也叫命令),安裝在什么路徑下,所以你安裝python后在cmd下直接輸入python,會給出‘不是內部命令或外部命令’的提示,這時需要你告訴系統,將要運行的python程序的安裝路徑是在D:\Python3.6\Python36\,告訴了以后,每當你在cmd窗口下只輸一個python,那么系統就會去D:\Python3.6\Python36\目錄找到python.exe並運行它;
理解了上面的原理,那還有個什么問題,你以什么方式告訴系統,你新安裝的程序的所以路徑是什么呢?這個不同的操作系統具體的操作是不一樣的,先以win10為例,win10可以在控制面板\系統和安全\系統\高級系統設置\高級\環境變量中設置,或者使用其他簡單的命令在命令行設置;
linux下的環境變量分為3種,分別為系統級別的環境變量、用戶級別的環境變量和shell級別的環境變量,其實區別就是環境變量的使用范圍,具體可以看我的另一篇
總結,出現不是內部命令或外部命令的提示,大概率都是環境變量出問題,從環境變量入手解決,環境變量就是你安裝的程序的路徑,如果不想設置環境變量,其實也可以給它補全路徑后再執行,也是可以的,只要保證系統可以從這個路徑找到這個程序即可
以下為補充內容,想了解的讀者可以看:
補充1. win10系統的內部命令,也有配環境變量嗎? 答案是有,比如常用的ping 命令,ipconfig命令,如下圖,可以先使用where 命令看一下ping和ipconfig分別安裝在哪里
然后,我們去該路徑下找一下有沒有這2個程序,如圖是有的;
最后,我們去驗證一下系統中有沒有這2個命令的環境變量,可以看到是有system32這個路徑的(為什么是不C:\Windows\System32\呢,因為把C:\Windows\用變量%SystemRoot%代替了),也就是說,當你輸入ping時,系統會在環境變量中的所有的路徑中去找這個PING.exe程序,最后在C:\Windows\System32\目錄下找到了PING.exe程序