python freeze
python應用在開發中會使用各種各樣的包,通常我們會用venv來對各應用項目依賴的python解釋器版本及其包進行隔離。
應用中import的各種包如何「固定」住呢? pip提供方法freeze,將依賴的套件名稱及版本匯出到txt檔案中,日後其他人引入專案時,可以透過pip提供的方法直接匯入,簡單來說:
pip freeze > requirements.txt pip install -r requirements.txt
跟java的maven倉庫導入差不多, 更輕量環保。
virtual env
java應用程式的使用中,我們都會指定專案的jdk路徑。大多數情況,一般可能每個開發機器上都會有1-3個版本的JDK, 如 jdk6, jdk7, jdk8,通常這樣就夠了。 然後會在系統PATH變數中指定一下JAVA_HOME路徑。
java應用的外部第三方包的依賴由maven設定,並在build時帶入應用的目錄作為依賴。
python的控制方式略有不同,由於python本身自帶了pip這個套件管理工具。而且由於python是動態化的腳本語言,可能會有好幾組不同的腳本分佈在不同的目錄組織,由於開發週期的原因,各個目錄的腳本依賴的python解釋器,包可能會不同,一個在python2跑的好好的腳本用python3的解釋器通常都會出錯。
我們需要一種把各組腳本運行環境隔離的方式,就是用virtual env解決。
具體方式就是在python專案的根目錄中:
|—myPythonProject |———codePackage
具體方式就是在python專案的根目錄中:
|—myPythonProject |———codePackage |———env |——bin |——lib |——include
運作:
virtualenv -p python3 env-p 代表創建一個python3的虛擬環境
env 運行後稱為該虛擬環境的目錄代表該虛擬環境的目錄?目錄結構為:
rrreee然後我們需要啟動這個虛擬環境:
source env/bin/activate
啟動後環境提示符號變成:
(env) ➜ knife git:(master) ✗時該環境已經是這個專案所需的虛擬python3環境了,此時pip install 所有的package都會被安裝在env/lib/python3.5/site-packages目錄下了,不會受到其他python專案安裝的package包影響。
如果使用pyCharm等IDE,需要在專案建立時指定專案對應的project interpreter,如下圖: