我是初學者,我正在學習Django進行web開發。所以我想知道我的小測試,應該總是有一個virtualenv或我可以繼續學習而不安裝它?我問過,因爲在youtube Django視頻中,一些教師正在安裝它,而另一些則不是。我應該在Django中總是使用virtualenvs嗎?
回答
No.使用virtualenvs
不是強制性的,但它可能有幫助。
我認爲您需要了解virtualenvs
的作用以及何時使用它。 virtualenvs
的功能是從其他人創建一個獨立的環境(例如,django項目)。 這不僅僅是一個Django
組件。它也可以用於其他項目。
我們假設有兩個不同的項目A和B.它們是否是Django
項目並不重要。
在項目A中,您可能需要使用python模塊AAA(版本1.00)。而在項目B中,您也想使用python模塊AAA(版本2.00)。兩者都使用相同的模塊,但其版本不同。
在這些情況下,您可以使用virtualenvs
創建兩個不同的環境並隔離這些環境。並在這些環境中分別安裝AAA版本1.0,AAA版本2.0。
當人們開始一個新項目時,爲它創建一個新的獨立環境是非常自然和常見的。然後,將項目移至另一臺計算機或在其他計算機上重新創建完全相同的環境很容易。此外,它不會受到其他以前安裝的模塊或配置的影響。如果在您的項目之前有其他模塊可能會以不同的方式工作,並且在部署之前可能無法找到。
所以這不是強制性的,但使用它是一個很好的做法。
此外,還有許多工具用於創建像Conda
,Docker
等不同層次的獨立環境......請看看這些。
從the hitchhiker's guide to python
虛擬環境是保持在不同的地方不同的 項目所需的依賴關係,通過爲他們創造虛擬的Python 環境的工具。它解決了「Project X取決於版本1.x ,但是,項目Y需要4.x」的困境,並保持您的全球站點包 目錄乾淨和易於管理。
這意味着如果您將所有軟件包安裝在本地環境中,則可能會在處理多個項目時發生衝突。因此,爲每個項目開發一個虛擬環境被認爲是一個失敗保險箱。
這在某種程度上是基於意見的問題,但因爲它涉及良好的做法,所以我想刪除幾行。
Django視頻中的一些教師對virtualenvs沒有任何說法,也許是因爲他們的課程針對的是Django,而不是virtualenvs,而且他們的視頻不可能擁有。
對Python使用虛擬環境通常是一種很好的做法,尤其是對於Web開發。您將從一些教程開始,並使用特定版本的Django。對於您的下一個項目,您最終想要使用最新的或LTS版本。不要以root身份全局安裝軟件包。
超越virtualenv
我強烈建議使用virtualenvwrapper
,這使得虛擬環境的使用變得非常愉快。
沒有什麼好的理由不會讓我知道,並且當我剛開始學習和弄亂我的系統時發生了這樣的錯誤,我需要幾個月的時間才能解決問題,我會強烈推薦他們。你最有可能在你最終得到的任何工作中使用它們,所以這是一件好學而且容易的事情。
Virtualenv-burrito是一種快速而簡單的方法來建立一切。
你的問題是:
我可以繼續,但不安裝呢?
所以答案是是。
virtualenv不是設置Django項目的必要條件。不過,如果你更加了解依賴關係,你最終會在未來使用virtualenvs,那麼爲什麼現在不開始學習如何使用它們呢?
virtualenv不是解決項目依賴性的唯一解決方案,而是Python開發中最常用的解決方案。
- 1. 我應該總是使用HTML Doctypes嗎?
- 2. 我應該總是使用webservice嗎?
- 3. 我應該總是使用GL_CULL_FACE嗎?
- 4. 我應該總是在構造函數中使用std :: move嗎?
- 5. 我應該總是在CookieManager中使用CookieSyncManager嗎?
- 6. 當我們在asp.net中使用Gridview時,我們應該總是使用sqldatasource嗎?
- 7. Django select_related - 我應該使用嗎?
- 8. 我們應該總是重寫equals嗎?
- 9. SQL VIEW應該總是在1NF中嗎?
- 10. 我應該總是在父進程中調用listen()嗎?
- 11. 'ImportDeclaration.moduleSpecifier`應該總是StringLiterial嗎?
- 12. 我應該總是使用connection.close
- 13. 我應該總是使用.off('load');?
- 14. autoconf:我應該總是使用AS_IF over if和m4_if嗎?
- 15. 我應該總是使用TryGetValue來訪問.net字典嗎?
- 16. 我應該總是避免使用小寫的類名嗎?
- 17. 應該在哪裏創建virtualenvs?
- 18. 我應該在django網址中使用slug字段嗎?
- 19. 我應該總是在PHP中檢查函數的參數嗎?
- 20. EventHandler應該總是用於事件嗎?
- 21. 我應該總是在Silverlight遊戲中使用遊戲循環嗎?
- 22. 我應該在android中使用getMeasuredState()嗎?
- 23. 我應該在RecyclerView中使用CursorLoader嗎?
- 24. 我應該在Matlab中使用arrayfun嗎?
- 25. 我應該在Flex4中使用Sprite嗎?
- 26. 我應該在Perl中使用autobox嗎?
- 27. 我應該在IntentService中使用WakeLock嗎?
- 28. 我應該總是removeEventListener?
- 29. 我應該總是在C++中使用智能指針11
- 30. 我應該使用django-activity-stream結合django-notifications嗎?
這與Django沒有關係。在做任何類型的Python開發項目時總是使用virtualenv。 –
@DanielRoseman我不同意。例如,如果你使用容器,你也不需要virtualenv。 – wim
我們可以爭論**總是**,但在絕大多數情況下,它肯定是一種很好的做法。 – cezar