遇到問題和需求 我的電腦環境:先安裝py2再安裝py3,平時我工作中是使用python2,如何保證兩個版本共存且讓代碼來選擇要使用的版本。 遇到問題 在cmd中輸入python,進入的是py2的環境,但是通過pip install模塊是安裝到了python3目錄下 需求 工作中使用pytho2,在學 ...
遇到問題和需求
我的電腦環境:先安裝py2再安裝py3,平時我工作中是使用python2,如何保證兩個版本共存且讓代碼來選擇要使用的版本。
遇到問題
在cmd中輸入python,進入的是py2的環境,但是通過pip install模塊是安裝到了python3目錄下
需求
工作中使用pytho2,在學習python新特性時,有個便捷的方法可以切換到python3。希望可以通過雙擊py文件來執行,而且可以區分不同的版本來執行
解決方案
安裝python3時的環境變數
在安裝python3時不要勾選添加安裝目錄到環境變數中,下麵這幾個都不要添加到環境變數的path中
-
C:\Python38
-
C:\Python38\Scripts
同時不要把這幾個目錄添加到環境變數的path中
-
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\
-
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\Scripts\
py腳本規範
在py腳本的第一行指定python的版本,記住要雙擊運行python腳本,而不要通過在cmd中調用 python xx.py來執行,因為python3沒有添加到環境變數,在cmd中會以python2來執行
! python2
! python3
不要修改改python3目錄下的python.exe的名字,否則腳本中指定的python3版本會找不到python.exe
加上這行之後對於只安裝python3的環境也是不會出錯的。
參考資料
參考資料:python2 和 python 3和多版本如何共存_KM (netease.com)
py.exe
在安裝python3.8.10時會有一個選項py launcher,這個py launcher是什麼呢?install global "py" launcher to make it easier to start python
這個py.exe程式安裝到了C:\Windows\py.exe
註意:只有python3才有py.exe
- 在C:\Windows下麵; 還有一個pyw.exe 是視窗版本
- py除了可以
py -2 xxx.py
, 還可以py -3.5 xxx.py
- 官方認為, py文件的預設打開方式應該是py.exe
通過py.exe來指定python版本
示例:
C:\Windows\System32>py -3
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
C:\Users\zhaoqingqing01>py -2
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:19:08) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip.exe
安裝目錄下這三個pip的MD5都是一樣的,說明是三個相同的文件
正確的方法為py2或py3單獨安裝庫,參考文章:《為不同版本python安裝pip的正確做法 - 趙青青 - 博客園 (cnblogs.com)》
py -2 -m pip install XXXX
py -3 -m pip install XXXX
#! python3 失效不識別
在我安裝python2 x64版本之後,#! python3 這條指令就失效了,列印出來的sys.version為python2 x64
測試代碼:
#! python3
# coding=utf-8
import sys
import os
print(sys.version)
os.system('pause')
#輸出結果:2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)]
然後我把python2 x64的版本卸載後,.py文件的打開方式就丟失了,所以可以認為是它修改了.py的打開方式。
- 官方認為, py文件的預設打開方式應該是py.exe,完整路徑:C:\Windows\py.exe
把py文件的打開方式修改為py.exe後一切都正常了,我是同時安裝了python2和python3,然後查看py.exe的版本號是3.x
待驗證
是否需要在C:\Windows\下放python.exe才能正常識別#!python2和#!python3?
這個exe的源碼如下(編譯為32位的C程式):
int main(int argc, char *argv[])
{
std::string s = "py ";
for (int i = 1; i < argc; ++i)
{
s += " ";
s += argv[i];
}
printf(s.c_str());
printf("\n");
system(s.c_str());
return 0;
}