虛擬環境vitualenv的使用

?Python3開發之虛擬環境virtualenv與virtualenvwrapper

?

在使用?Python?開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題;

亦或者是在開發過程中不想讓物理環境里充斥各種各樣的庫,引發未來的依賴災難。

此時,我們需要對于不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔。

1、安裝pip3? install? virtualenv

?

2、命令行創建虛擬環境

2.1創建存放虛擬環境的文件夾(我的是想放在H:\envs)

?

2.2查看virtualenv有哪些命令

?

?

?2.3 創建一個env1的虛擬、干凈的Python環境

?

?2.4激活創建的env1虛擬環境

?

?

?

?

?

?2.5 測試剛剛激活的env1環境

?  新安裝的Python環境是很干凈的,沒有django等模塊

?

?2.6在env1環境安裝django1.9版本

?

?2.7退出虛擬環境env1

?

?3、Pycharm創建虛擬環境

3.1打開設置

?

?3.2設置虛擬環境名稱、路徑;進行創建

?

?3.3查看是否成功

?

?4、Linux下安裝、配置virtualenv

4.1下載

#指定清華源下載pip的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#升級pip工具
pip3 install --upgrade pip

?

?

4.2安裝、配置

1.安裝virtualenv
pip3 install virtualenv
設置軟連接 ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
2.創建目錄 mkdir Myproject cd Myproject 3.創建獨立運行環境-命名 virtualenv --no-site-packages --python=python3 venv#得到獨立第三方包的環境,并且指定解釋器是python3 4.進入虛擬環境 source venv/bin/activate#此時進入虛擬環境(venv)Myproject 5.安裝第三方包 (venv)Myproject: pip3 install django==1.9.8 #此時pip的包都會安裝到venv環境下,venv是針對Myproject創建的 6.退出venv環境 deactivate命令 7. virtualenv是如何創建“獨立”的Python運行環境的呢?原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入
一個virtualenv環境時,
virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。

?

?

4.3確保開發環境的一致性

1.假設我們在本地開發環境,準備好了項目+依賴包環境
2.現在需要將項目上傳至服務器,上線發布
3.那么就要保證服務器的python環境一致性

?

?

解決方案:
1.通過命令保證環境的一致性,導出當前python環境的包
pip3 freeze > requirements.txt   這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。

requirements.txt文件格式:

 
requests==1.2.0?
 
Flask==0.10.1
2.上傳至服務器后,在服務器下創建virtualenv,在venv中導入項目所需的模塊依賴 pip3 install -r requirements.txt

?pip批量安裝package
??? 將需要安裝的包保存在aa.txt中
??? cd到aa.txt所在目錄,運行:
?? $ pip install -r aa.txt

?
pip批量卸載package
??? 將需要卸載的包保存在aa.txt中
??? cd到aa.txt所在目錄,運行:
?? $ pip uninstall -r aa.txt
備注:需要卸載的包可從pip freeze得到

$ pip freeze?????????????????? # 顯示已安裝的包名及版本
$ pip freeze > aa.txt????????? # 將已安裝的包名及版本寫入aa.txt
?

5、虛擬環境之virtualenvwrapper

virtualenv?的一個最大的缺點就是:

每次開啟虛擬環境之前要去虛擬環境所在目錄下的?bin?目錄下?source?一下?activate,這就需要我們記住每個虛擬環境所在的目錄。

并且還有可能你忘記了虛擬環境放在哪。。。

  • 一種可行的解決方案是,將所有的虛擬環境目錄全都集中起來,例如/opt/all_venv/,并且針對不同的目錄做不同的事。
  • 使用virtualenvwrapper管理你的虛擬環境(virtualenv),其實他就是統一管理虛擬環境的目錄,并且省去了source的步驟

?

5.1:安裝virtualenvwrapper

pip3 install virtualenvwrapper

?

?

5.2設置Linux的環境變量,每次啟動就加載virtualenvwrapper

把下面兩行代碼添加到 ~/.bashrc文件中
打開文件
vim ~/.bashrc
寫入以下兩行代碼
export WORKON_HOME=~/Envs   #設置virtualenv的統一管理目錄
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的參數,生成干凈隔絕的環境
export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3     #指定python解釋器
source /opt/python34/bin/virtualenvwrapper.sh #執行virtualenvwrapper安裝腳本
讀取文件,使得生效,此時已經可以使用virtalenvwrapper
source ~/.bashrc

?

?

5.3基本使用virtualenvwrapper

創建一個虛擬環境:
$ mkvirtualenv my_django115
這會在 ~/Envs 中創建 my_django115 文件夾。在虛擬環境上工作:激活虛擬環境my_django115
$ workon my_django115再創建一個新的虛擬環境
$ mkvirtualenv my_django2virtualenvwrapper 提供環境名字的tab補全功能。
當有很多環境, 并且很難記住它們的名字時,這就顯得很有用。workon還可以任意停止你當前的環境,可以在多個虛擬環境中來回切換
workon django1.15workon django2.0也可以手動停止虛擬環境
deactivate刪除虛擬環境,需要先退出虛擬環境
rmvirtualenv my_django115

?

?

5.4常用其他命令

lsvirtualenv
列舉所有的環境。
cdvirtualenv
導航到當前激活的虛擬環境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages 。
cdsitepackages
和上面的類似,但是是直接進入到 site-packages 目錄中。
lssitepackages
顯示 site-packages 目錄中的內容。完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

?

?

5.5圖解

?

六、異常情況

假如source ~/.bashrc時,提示以下錯誤

$ source ~/.bashrc
>> -bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory

【原因】
.bashrc文件中的virtualenvwrapper.sh所在目錄錯誤。

【解決方案】
①查找virtualenvwrapper.sh所在目錄

$ find / -name "virtualenvwrapper.sh"
>> /usr/local/python3/bin/virtualenvwrapper.sh

②把.bashrc文件的virtualenvwrapper.sh目錄更改為實際所在目錄

source /usr/local/python3/bin/virtualenvwrapper.sh    # virtualenvwrapper.sh實際所在目錄

?

假如創建虛擬環境時,提示以下錯誤

$ mkvirtualenv my_env
>> ERROR: virtualenvwrapper could not find virtualenv in your path

【解決方案】
①查找virtualenv所在目錄

$ find / -name "virtualenv"
>> /usr/local/python3/bin/virtualenv

②創建軟鏈接

$  ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv

轉載于:https://www.cnblogs.com/yunwangjun-python-520/p/10807315.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449072.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

find_first_of和find函數的區別

小記: find_first_of函數最容易出錯的地方是和find函數搞混。它最大的區別就是如果在一個字符串str1中查找另一個字符串str2,如果str1中含有str2中的任何字符,則就會查找成功,而find則不同;

銀行各類理財收益漸漲 各類寶錢景尚不明朗

這個春天,投資似乎進入了一個好事多磨的階段。央行一反先前支持的態度,開始對互聯網理財念起了“緊箍咒”。一時間,各種“寶”的命運變得撲朔迷離起來。盡管各種“寶”聲明:不受央行政策影響。而投資者內心的擔憂,恐怕…

Firefox 66回歸!修復多項臭蟲相關問題

上周最新版Firefox 66因為爆出會使微軟Office 365中的PowerPoint文字消失的臭蟲,Mozilla暫停發送。3月27日Mozilla重新釋出修補完成的最新版Firefox 66.0.2。根據Mozilla臭蟲報告網頁,Firefox 66除了造成Office 365中的PowerPoint文字消失的問題外&#…

PHP全棧學習筆記27

數組概述,類型,聲明,遍歷,輸出,獲取數組中最后一個元素,刪除重復數組,獲取數組中指定元素的鍵值,排序,將數組中的元素合成字符串。 數組概述,數組是存儲&…

Docker : 數據卷(創建、掛載、查看、刪除)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 數據卷 數據卷 是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性: 數據卷…

mac地址和ip地址的區別(轉)

先糾正一下幾個比較模糊的概念:“MAC地址表儲存IP地址”, MAC地址表是二層設備中存儲“MAC地址”和“轉發端口”映射關系的表,并不直接存儲IP地址。 “路由器根據MAC地址來選擇路由進行數據發送”,對于三層設備的三層端口來說&…

你是否發現 職業能力危機,請 警惕

身在職場,你有不有遭遇職業能力危機呢 ? 核心競爭力的增長是職業持續性發展的基礎,隨著年齡的增長和工作經驗的積累,有的職場人士保持著良好的發展勢態,有的卻越來越落伍,競爭力越來越弱。只有能力跟得上變化&#x…

你的GitHub,怎么和我用的不太一樣?

說起代碼托管,相信絕大多數人腦海中浮現出的第一個詞都是“GitHub”。經過多年的發展,GitHub儼然已經成為了代碼托管領域的標簽…隨著國內互聯網環境的優化,互聯網產業鏈的不斷壯大,越來越多的產業被拉入到了互聯網中來&#xff0…

Windows下多個JDK版本的切換方法

問題 因我之前在window中無法命令行輸入,后來發現是電腦中存在多個JDK,導致設置混亂。于是,我繼續深入研究了當電腦存在多個JDK的情況下,如何設置想要的JDK版本。步驟 1.更改環境變量 進入環境變量的配置界面,將JAVA_H…

哈哈哈,只有程序員才懂的黑色幽默 ... ...

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 也是機緣巧合,讓我一個之前工作從未接觸過程序員的人,現在成天和程序員打交道,要知道,不…

二維數組指針

概括的說,指針其實就是可變數組的首地址,說是可變數組,是 指其包含內容的數量的可變的,并且是可動態申請和釋放的,從而充 分節約寶貴的內存資源。我一向喜歡一維數組,除非萬不得已,我一 般是不用…

運動并不是最好的減肥辦法,控制飲食也不是

運動并不是最好的減肥辦法&#xff0c;控制飲食也不是。 兩者的<有機>結合&#xff0c;才是最好的減肥法。 其實&#xff0c;可以把減肥當作一個體系&#xff1a;這個體系里&#xff0c;有進有出。 攝入過多&#xff0c;排出不夠&#xff0c;便是我大多數朋友——也許…

ONVIF Device Manager修改設備密碼

這個onvif工具可以實時監控畫面&#xff0c;使用起來簡單方便 左側一欄是設備信息&#xff0c;中間上半部分是設備配置設置&#xff0c;下半部分是圖像預覽配置設置。 修改密碼可通過該工具&#xff0c;點擊User management后選擇用戶類型并且修改密碼。

《 圖解 TCP/IP 》讀書筆記

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. WAN &#xff1a;Wide Area Network 廣域網。 LAN &#xff1a; Local Area Network 局域網。 2. TCP/IP 是通信協議的統稱。 3. C…

mysql 數據庫函數入門

轉載于:https://www.cnblogs.com/hwgok/p/10816922.html

函數中的apply,call入門介紹

###函數中的apply,call入門 牽扯到apply,call就要先說一下它們和函數的淵源 Javascript函數既是也是對象 它和其它的javascript對象沒有什么區別。并且每個函數都包含兩個非繼承而來的方法 apply()和call(),這兩個方法都可以間接的調用函數 例如: function f() {console.log(1)…

H.264入門級概念之I、B、P幀

MPEG壓縮中的 I、B、P幀 首先,MPEG-1壓縮的基本思想:幀內壓縮和幀間壓縮。 其次,時間相關性的統計分析:統計的結果表明,在間隔1~2幀的圖像中,各像素只有10%以下的點,其亮度差值變化超過2%,而色度差值的變化只有1%以下。 采用的壓縮方法: 分組:把幾幀圖像分為一組(GOP),為防止…

亞洲第二富豪呂志和的“雙贏”人生

亞洲第二富豪“香港石礦大王”呂志和&#xff0c;作為香港四大傳奇富商之一&#xff0c;由于行事低調&#xff0c;鮮少接受媒體訪問&#xff0c;使他更富有商界傳奇色彩。 在多年的經營發展中&#xff0c;呂志和秉承真誠守信&#xff0c;互惠共存的商業信條&#xff0c;助他闖…

《 第一本Docker書 》讀書筆記 --- Docker 各項操作命令及參數說明(docker run 命令各個參數說明)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS &#xff1a;個人所有讀書筆記只記錄個人想要的內容&#xff0c;很可能原書大量內容沒有納入筆記中... ... 1. 可用 docker info 查…

配置u-boot的ip、網卡ip的命令

配置u-boot的ip地址&#xff1a; 串口連接設備&#xff0c;重啟讀秒時快速回車進入u-boot&#xff1a; setenv serverip 192.168.x.x 配置PC段連接的IP. setenv ipaddr 192.168.x.x 配置板子的.配置網卡ip(臨時) 設備端終端&#xff1a; # ifconfig eth0 192.168.1.155 net…