2016-12-22 199 views
0

我目前是網絡編程的新手。最近我一直在研究這個Django項目,並且我一直在閱讀關於虛擬環境的知識。在我的項目開始時,我無法建立一個虛擬環境,所以我沒有它就繼續進行這個項目。我的問題是Python的虛擬環境Django

無論這個虛擬環境是否真的有必要?

如果我想在將來製作更多的Django項目,我是否需要這個虛擬環境來區分這些項目,因爲現在我正在我的主C:目錄的命令提示符下運行所有​​命令?

此虛擬環境是否區分多個項目,還是將每個項目與其編碼的Django/Python版本或兩者分開?我想知道,因爲我目前在我的主C:驅動器目錄中輸入了諸如python manage.py runserver(沒有虛擬環境)的命令。那麼這是否意味着我無法在沒有虛擬環境的情況下同時執行多個項目?我還可以在沒有虛擬環境的情況下工作多個項目嗎? (我對此尤其感到困惑)

我應該試着爲我的下一個項目設置一個虛擬環境,還是可以爲當前的項目做這個工作(我已經完成了項目的一半,已經制作了模型,視圖,模板等)?

任何澄清我的困惑的答案是非常感謝!

+0

您可以在不使用虛擬envs的情況下編寫應用程序,但是您可以編寫應用程序而無需使用源代碼管理。你可以隨時創建一個virtualenv,但是你的問題太廣泛了。 – Sayse

回答

1

那麼,這是初學者中最常見的問題之一。我,我自己面臨這個問題,確實建立了多個項目,而不用擔心虛擬環境。

但是,最近我意識到使用虛擬環境的重要性。一些使用虛擬環境的好處是:

  1. 依賴管理:防止多個項目的依賴關係之間的衝突。
  2. 易於安裝並在不同的機器上設置新項目:將您的依賴關係存儲在requirements.txt文件中並運行 pip install -r requirements.txt以在任何地方安裝依賴關係。
1

如果沒有虛擬環境,您的所有項目都將使用相同的安裝包。

當您想要在項目完成時將項目移動到服務器時,您不知道該項目需要哪些軟件包,因此您唯一的選擇是在其中安裝所有這些軟件包。它將很快成爲一個長長的清單,許多軟件包對於這個特定的項目來說不是必需的。

使用虛擬環境時,每個項目都有一組已安裝的軟件包,而且它們不混合。更好。

現在就可以開始使用虛擬環境了。在您的項目目錄,執行:

pip install virtualenv 

現在你有virtualenv中的命令(對所有項目)。

virtualenv env 

現在,您的項目目錄中有一個目錄「env」,它將包含此項目的virtualenv。

env\Scripts\activate 

現在你正在使用這個virtualenv(你的提示改變,以反映這一點)。

pip install django 

只爲該項目安裝Django。

pip freeze 

顯示您已安裝哪些軟件包,現在僅適用於此項目。

pip freeze > requirements.txt 

創建一個需求。您可以使用txt來記住哪些包需要安裝,並且作爲

的輸入
pip install -r requirements.txt 

安裝它們。這或多或少都是你需要的。

0

在java中,所有使用的庫都可以打包成war或jar文件。好處是你不需要擔心操作系統的環境。

Python是一種純粹的動態語言。如果沒有虛擬環境,所有的python庫都需要安裝到系統路徑中,並在所有python項目之間共享。

想象一下,您正在開發一個django 1.10項目。你找到一個演示項目。你想在你的機器上運行它。但它只與django 1.8兼容。你不能在同一臺機器上安裝同一個庫的兩個版本,所以你會陷入困境。

虛擬環境解決了這樣的問題。

但是當然虛擬環境並不完美。有一些python庫像mysql-python,它依賴於libmysqld。如果這些庫在您的項目中使用,它不能完全獨立於OS中的設置。我認爲最好的做法是將虛擬機與docker結合使用。 IDE像pycharm支持通過docker遠程運行