配置獨立於系統的PYTHON環境
配置獨立於系統的PYTHON環境
python 當前用戶包
一種解決方案是在利用本機的python環境的基礎上,將python的包安裝在當前user的.local文件夾下
一共有兩種方式來實現pip的時候安裝到當前user
設置pip配置文件 pip.conf
一種是在~/.pip文件夾下的pip配置文件pip.conf中設置
加入
[install]
install-option=--prefix=~/.local
相當於每次在執行
# pip install package 命令的時候在 install 後面加 --prefix 參數指定 install 的路徑 pip install --prefix=~/.local package
Tips:
python import 查找python package的流程
我的理解 TODO
參考資料 python import 機制
pip 參數
另一種實現是直接在pip install的時候加一個 --user, 當然這個也可以寫到pip.conf配置文件中去
pip install --user package
PYTHON 虛擬環境設置
因為在實際工作中經常會遇到創建PYTHON虛擬環境的需求,每次都得去Google,很不方便,這裏特意整理一下PYTHON虛擬環境創建的相關資料。
目錄:
虛擬環境有什麽好處
- 常見的創建虛擬環境的工具
- virtualenv
- Anaconda
虛擬環境配置的一些小trick
虛擬環境 Cons
有時候我們可能手上會有多個python 項目,每個項目使用不同版本的python(python2.7 python3.5 etc.),並且每個python對應於不同的包依賴,還有一種情況是我們可能沒有root權限,或者多人共用一個服務器,我們想自己創建一個獨立於其他用戶的python環境。
這個時候python虛擬環境機制就顯得很有用了,python虛擬環境主要有以下好處:
- 能夠創建一個獨立的python環境,和其他用戶的設置都不沖突
- 能夠為每一個項目單獨維護一個環境,適應不同的需求
常見的創建虛擬環境的工具
virtualenv
virtualenv is a tool to create isolated Python environments.
virtualenv 主要解決了以下三個問題:
- 不同的項目需要同一個python package的不同版本,無法在/usr/lib/python/site-packages文件夾下面同時維護兩個不同版本(eg. tensorflow 1.0 and tensorflow 1.5)
- 需要為某個項目永久(或者長時間)保留一個運行環境,(保持本機的主環境長時間不變動不現實,無意識的更新或者其他項目需要更新)
- 在服務器的使用中,普通用戶沒有權限訪問/usr/lib/python/site-packages文件夾,無法修改主機python環境
virtualenv 原理的一個說明:
virtualenv是如何創建“獨立”的Python運行環境的呢?
原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。
安裝virtualenv
virtualenv 的安裝方式很多,可以通過pip安裝,也可以直接從git上下載,通過源碼安裝,還可以用easy_install安裝。
這裏只介紹使用pip安裝的方法
安裝到全局
[sudo] pip install virtualenv
安裝到當前用戶
shell export PYTHONUSERBASE=$HOME pip install --user virtualenv
virtualenv 的簡單使用
virtualenv 主要幾個指令是
創建env
virtualenv env_name --python=python3.x # virtualenv 會在當前文件夾下創建一個名為env_name的文件夾作為虛擬環境env_name的目錄,並且將python3.x作為新創建環境的python解釋器
進入env
# 想要使用env,需要先active當前環境,命令為: source env_path/bin/activate #Tips: 可以在~/.bash_aliases文件中設定一個alias,方便直接進入env
使用完env以後,可以通過
deactivate
退出當前env如果要刪除某個env,只需要
rm -r env_dir
,刪除對應的文件夾就可以了
還有一些virtualenv的擴展包,進一步集成了virtualenv的功能:virtualenvwrapper (能夠在一個文件夾下統一管理所有的env)
- 其他幾個小trick
- virtualenv 默認不包含全局安裝的python 包
- 可以在env裏面通過
pip freeze > requirements.txt
來獲取當前環境所有的python package的信息。這樣在下一次創建環境的時候就可以通過pip install -r requirements.txt
直接快速安裝所有依賴包
Anaconda
配置獨立於系統的PYTHON環境