python開發之virtualenv與virtualenvwrapper講解

来源:https://www.cnblogs.com/zbj666/archive/2020/01/11/12179939.html
-Advertisement-
Play Games

python開發之virtualenv與virtualenvwrapper講解 在使用 Python 開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題; 亦或者是在開發過程中不想讓物理環境里充斥各種各樣的庫,引發未來的依賴災難。 此時,我們需要對於不同的工程使用不同的虛擬環境來保持 ...


 

python開發之virtualenv與virtualenvwrapper講解

 

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

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

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

這裡,就要隆重介紹 virtualenv,一個可以幫助我們管理不同 Python 環境的絕好工具。

virtualenv 可以在系統中建立多個不同並且相互不幹擾的虛擬環境。

一、Linux下安裝、配置virtualenv

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

 

1.安裝virtualenv
pip3 install 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環境。

二、確保開發環境的一致性

1.假設我們在本地開發環境,準備好了項目+依賴包環境
2.現在需要將項目上傳至伺服器,上線發佈
3.那麼就要保證伺服器的python環境一致性
解決方案:
1.通過命令保證環境的一致性,導出當前python環境的包
pip3 freeze > requirements.txt   

這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。 2.上傳至伺服器後,在伺服器下創建virtualenv,在venv中導入項目所需的模塊依賴 pip3 install -r requirements.txt

 三、虛擬環境之virtualenvwrapper

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

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

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

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

步驟1:安裝virtualenvwrapper

pip3 install virtualenvwrapper

步驟2:設置Linux的用戶個人配置文件

把下麵兩行代碼添加到 ~/.bashrc文件中
打開文件
vim ~/.bashrc
寫入以下幾行代碼(export可以先去掉)
export WORKON_HOME=~/Envs   # 設置virtualenv的統一管理目錄, 以後自動下載的虛擬環境,全部都放在這
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   # 添加virtualenvwrapper的參數,生成乾凈隔絕的環境
export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3     # 指定python解釋器的本體(註意此路徑隨不同的linux環境改變而改變)
source /opt/python34/bin/virtualenvwrapper.sh # 執行virtualenvwrapper安裝腳本
讀取文件,使得生效,此時已經可以使用virtalenvwrapper source ~/.bashrc


退出會話,重新登錄生效,且每次登錄的時候,就自動載入virtualenvwrapper工具

 

步驟3:基本使用virtualenvwrapper

1. 創建一個虛擬環境:
$ mkvirtualenv my_django115
這會在 ~/Envs 中創建 my_django115 文件夾。

2. 在虛擬環境上工作:激活虛擬環境my_django115
$ workon my_django115

3. 再創建一個新的虛擬環境
$ mkvirtualenv my_django2
virtualenvwrapper 提供環境名字的tab補全功能。 當有很多環境, 並且很難記住它們的名字時,這就顯得很有用。 4. workon還可以任意停止你當前的環境,可以在多個虛擬環境中來回切換 workon django1.15 workon django2.0 5. 也可以手動停止虛擬環境 deactivate 6. 刪除虛擬環境,需要先退出虛擬環境 rmvirtualenv my_django115

步驟四:常用其他命令

1. 列舉所有的虛擬環境。
lsvirtualenv

2. 導航到當前激活的虛擬環境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages 。
cdvirtualenv
3. 和上面的類似,但是是直接進入到 site-packages 目錄中。
cdsitepackages
4. 顯示 site-packages 目錄中的內容。
lssitepackages

完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

 

 

圖解

二、Mac下創建pycharm

 

第二步:

第三步:此時這裡的Django環境是虛擬環境的版本

第四步:檢查venv下的django版本

第五步:添加已創建的虛擬環境venv的python解釋器,至pycharm,用於創建1.98指定版本的django

第六步:成功啟動1.98版本的django

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • name為自定義節點的名稱,type為自定義節點解析文件的命名空間和自定義節處理程式的類名 1. 在<configSections>節點中註冊你所要定義的節點名稱及用於處理該節點的配置節處理程式。代碼如下: <configSections> <section name="dbFactory" typ ...
  • 一. Docker安裝 Docker 要求版本Docker 18.09.0+以上 安裝地址:https://www.runoob.com/docker/windows-docker-install.html 1.操作系統win10系統,在啟用或關閉Windows功能中,開啟hyper-v 2.安裝後 ...
  • using System; namespace runoob { class MyClass { static void Main(string[] args) { MyClass1 myClass = new MyClass1(); myClass.Dialog(); } } class MyCl ...
  • 引言 .net core 3.1 是微軟LTS長期3年支持版本,正式發佈於2019 12 03,並且在windows平臺上支持了Winfrom跟WPF桌面應用。本文將介紹使用 vs 2019 開發 Windows Forms 桌面應用程式。 開發 Windows Forms 程式 首先,打開 vs ...
  • saltstack高效運維 salt介紹 saltstack是由thomas Hatch於2011年創建的一個開源項目,設計初衷是為了實現一個快速的遠程執行系統。 salt強大嗎 系統管理員日常會進行大量的重覆性操作,例如安裝軟體,修改配置文件,創建用戶,批量執行命令等等。如果主機數量龐大,單靠人工 ...
  • nginx入門與實戰 網站服務 想必我們大多數人都是通過訪問網站而開始接觸互聯網的吧。我們平時訪問的網站服務 就是 Web 網路服務,一般是指允許用戶通過瀏覽器訪問到互聯網中各種資源的服務。 Web 網路服務是一種被動訪問的服務程式,即只有接收到互聯網中其他主機發出的 請求後才會響應,最終用於提供服 ...
  • web service基礎知識 Web服務基礎 用戶訪問網站的基本流程 我們每天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當我們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?普通 ...
  • Mac下安裝ipython與jupyter IPython從Python發展而來,更傾向於科學計算。互聯網數據分析更喜歡用。 首先切換root用戶: sudo su - pip3自動安裝ipython MacBook-Pro:~ root# pip3 install ipython 自動安裝完成後建 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...