讀完需要9分鐘
虛擬環境的意義,就如同 虛擬機器 一樣,它可以實現不同環境中python依賴包相互獨立,互不干擾。這在一定程度的意義上,給了我們的專案乙份很有力的保障。在這裡,我把它戲稱為「保險」。全網唯一。
舉個例子吧。
假設我們的電腦裡有兩個專案,他們都用到同乙個第三方包,本來一切都順利。但是由於某種原因,專案b由於某些原因要使用這個第三方包的一些新特性(新版本才有),而如果就這樣貿然公升級了,對專案a的影響我們無法評估,這個時候我們就特別需要有一種解決方案可以讓專案a和b,處於兩個不同的python環境中。互不影響。
市場上管理 python 版本和環境的工具有很多,這裡列舉幾個:
安裝
pip install virtualenv# 檢查版本virtualenv --version
建立在這裡還是要推薦下我自己建的python開發學習群:725479218,群裡都是學python開發的,如果你正在學習python ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有python軟體開發相關的),包括我自己整理的乙份2018最新的python高階資料和高階開發教程,歡迎高階中和進想深入python的小夥伴
進入/退出
$ cd /home/wangbm/envs# 進入
$ source my_env01/bin/activate# 退出$ deactivate
刪除虛擬環境,只需刪除對應的資料夾就行了。並不會影響全域性的python和其他環境。
$ cd /home/wangbm/envs$ rm -rf my_env01
注意:建立的虛擬環境,不會包含原生全域性環境的第三方包,其會保證新建虛擬環境的乾淨。
如果你需要和全域性環境使用相同的第三方包。可以使用如下方法:
# 匯出依賴包$ pip freeze > requirements.txt
# 安裝依賴包$ pip install -r requirements.txt
virtualenv 雖然已經相當好用了,可是功能還是不夠完善。
你可能也發現了,要進入虛擬環境,必須得牢記之前設定的虛擬環境目錄,如果你每次按規矩來,都將環境安裝在固定目錄下也沒啥事。但是很多情況下,人是會懶惰的,到時可能會有很多個虛擬環境散落在系統各處,你將有可能忘記它們的名字或者位置。
還有一點,virtualenv 切換環境需要兩步,退出 -> 進入。不夠簡便。
安裝在~/.bashrc 檔案新增
通常我們使用的場景有如下幾種
接下來,我將一一展示。
互動式中
先對比下,全域性環境和虛擬環境的區別,全域性環境中有requests包,而虛擬環境中並未安裝。當我們敲入 workon my_env01,前面有 my_env01的標識,說明我們已經處在虛擬環境中。後面所有的操作,都將在虛擬環境下執行。
工程專案中
我們的工程專案,都有乙個入口檔案,仔細觀察,其首行可以指定python直譯器。
倘若我們要在虛擬環境中執行這個專案,只要更改這個檔案頭部即可。
現在我還是以,import requests 為例,來說明,是否是在虛擬環境下執行的,如果是,則和上面一樣,會報錯。
檔案內容:
#!/root/.virtualenvs/my_env01/bin/pythonimport requestsprint "ok"
執行前,注意新增執行許可權。
$ chmod +x ming.py
好了。來執行一下
$ ./ming.py
發現和預期一樣,真的報錯了。說明我們指定的虛擬環境有效果。
pycharm中
點選 file - settings - project - interpreter
點選小齒輪。如圖點選新增,按提示新增乙個虛擬環境。然後點 ok 就可以使用這個虛擬環境,之後的專案都會在這個虛擬環境下執行。
好啦!以上就是本期的全部內容。
學完本章,快去為你的專案買乙份「保險」吧。
專案描述之開發工具
dw bi平台 涉及技術分類 bo 報表 datastage etl pl sql,oracle hyperion epm產品,obiee dw資料倉儲 etl工具 datastage,cdc changed data capture tibco 涉及系統 cpp contract processi...
iOS 專案開發工具JIRA
工作中為了有效管控專案開發進度與責任問題,引入了 jira 管理平台 任務明晰 與 責任人掛鉤 方便管控進度 有利於bug的消除 各部門配合方便 以後開發中的任務都要經過 jira,特殊情況需 經理 同意 清楚任務的 分配者 與 責任人 問題解決要及時關閉 更多資訊參考 jira鏈結 專案的版本控制...
給你的企業買份網路安全保險如何?
簡單地說,每個資訊保安計畫都涵蓋兩個方面 保護和響應。成功的網路安全計畫應該包括這兩者,不過無論就哪個方面來講,企業需要處理好這五個問題 1.他們已經控制並完全實施的事情 2.他們可以處理,但難以解決的事情 3.他們必須努力應對但仍然無法管理的事情 4.他們不知道如何處理的事情 在流程 技術或人員方...