一、為什么要創建虛擬環境:
應為在開發中會有同時對一個包不同版本的需求,創建多個開發環境就能解決這個問題。或許也會有對python不同版本的需求,這就需要使用程序來管理不同的版本,virtualenv與virtualenvwrapper就好比能創造出來一個一個的獨立容器,各個容器之間互不干擾,所以我們就可以在每個容器中安裝我們需要的依賴包
虛擬環境是Python解釋器的一個私有的副本,在這個環境中你可以安裝私有包,而且不會影響系統中安裝的全局Python解釋器。虛擬環境非常的有用,可以在系統中Python解釋器中避免包的混亂和版本的沖突。為每個程序單獨創建虛擬環境可以保證程序只能訪問虛擬環境中的包,從而保持全局解釋器的干凈簡潔,使其只作為(更多)虛擬環境的源。
二、virtualenv 與 virtualenvwrapper-win
virtualenvwrapper-win可以看做是對virtualenv的優化,前者可以讓你省去操心虛擬環境存放在不同的文件夾下帶來的管理問題,注意必須在virtualenv安裝成功的基礎上安裝
安裝virtualenv
$ pip install virtualenv
等待一會出現successfully...就說明成功了
virtualenv使用步驟命令
#先使用cd命令進入到你要虛擬環境存放的目錄 cd操作方法見:https://www.cnblogs.com/Gaoqiking/p/10528079.html $ cd C:\Users\Administrator.SC-22\AppData\Local\Programs\Python\Python37\virtual_environment $ virtualenv envname #創建一個虛擬環境,envname為環境名,也是創建的文件夾名 #然后你需要進入上名新創建的文件夾下的scripts文件夾 $ cd envaname/scripts #也可以以絕對目錄進去 $ cd cd C:\Users\Administrator.SC-22\AppData\Local\Programs\Python\Python37\virtual_environmentenvaname/scripts #這是絕對目錄,下次你可以直接這樣進入 $ activate #激活 實際上是執行scripts里面的activate.bat
當成功激活后會顯示虛擬環境名(powershell有些麻煩我認為),你不用關注我為什么后面有一個 (拉姆他符號)
在虛擬環境中使用IDLE
當我們創建了虛擬環境后,若是正常打開IDLE,是無法訪問虛擬環境里面的包的,需要在命令行里輸入
$ python -m idlelib.idle #注意,需要當前的虛擬空間已經激活
-m是將庫中的模塊當做腳本去運行
我們還可以只在IDLE里編輯,然后運行的時候不按F5而是用命令行運行程序
(envs)C:\Users\Administrator.SC-> python ./envs/web_go/server.py #注意路徑
virtualenv關閉虛擬環境
$ deactivate
—system-site-packages 參數
使用這個參數創建的隔離環境能讓你直接引用 /usr/lib/python2.7/site-packages (即本機全局site-package目錄)中的依賴包,只在擁有全局site-packages目錄的讀寫權限,並且你的應用要依賴其中的模塊的情況下,該參數會很有用。其他情況下沒必要使用該參數
virtualenv --system-site-packages -p python3 ./venv #-p為指定解釋器所用的版本
至此,我們就成功創建了一個虛擬環境,里面只有一些必須的頭文件,我們就可以安裝我們需要的依賴包了不過如果想讓使用體驗更完美,我們還可以選擇virtualenvwrapper-win
安裝virtualenvwrapper-win(注意不是virtualenvwrapper)
$ pip install virtualenvwrapper-win
創建虛擬環境
完成后會自動進入,且不需要像virtualenv一樣先指定文件夾(如果不指定會存在當前目錄下),這個可以直接運行命令,虛擬環境會被存放在一個固定的文件夾(見下圖框選)
$ mkvirtualenv envname
配置
假如你想改變存放的文件夾,你要配置系統環境變量(注意是新建系統變量)
通過設置系統變量“WORKON_HOME”,我們就為virtualenvwrapper-win創建的虛擬環境重新制定了存放目錄,你可以將原有的文件拷貝過去
使用workon 命令進入虛擬環境
$ workon envname # 進入虛擬環境名為envname $workon #會顯示所有的虛擬環境
退出
$ deactivate
三、更多信息與參考經驗
virtualenv中文文檔:https://www.bookstack.cn/read/virtualenv-zh/date-2018.08.27.08.08.23
https://blog.csdn.net/godot06/article/details/81079064
https://www.cnblogs.com/cwp-bg/p/python.html
四、遇到問題
問題:Suggestion [3,General]: 找不到命令 activate,但它確實存在於當前位置。默認情況下,Windows PowerShell 不會從當前位置加載命令。如果信任此命令,請改為鍵入“.\activate”。有關詳細信息,請參閱 "get-help about_Command_Precedence"。
解決辦法:按照提示“改為鍵入.\activate”后又出現另外錯誤:
問題:.\activate : 無法加載文件 C:\Users\Administrator.SC-2002132\AppData\Local\Programs\Python\Python37\virtual_environment\.virtualenvs\envname\scripts\activate.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
解決辦法:認真閱讀提示,進入提示網站,發現是執行策略問題,有幾個解決辦法
一是可以執行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser RemoteSigned是執行策略, CurrentUser是策略作用域,,這些都可以在網站上找到解釋
二是可以直接復制腳本內容進去執行
三是可以選用cmd來運行
四是氣運丹田,大喊一聲“媽”,或者關機解決