配置獨立于系統的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
Anaconda is the most popular python data science platform. (Introduced by the Anaconda website)
Anaconda Python 是專注于數據分析的Python發行版本,包含了conda、python等190多個科學包及其依賴項。
Anaconda分離python環境的原理和virtualenv基本一致,都是通過創建一個獨立的文件夾保存python環境。Anaconda相較于virtualenv不同的地方主要有以下幾點:
- Anaconda是一個綜合的python工具,包括python基礎解釋器,IPython,CPython,JupiterBook和一個Python IDE Spyder(Spyder是一個擁有和Matlab相似的界面的Python IDE)
- Anaconda配置python環境的時候只需要指定python版本,而不需要本機提前安裝(這相較于virtualenv是一個很大的優勢)
- Anaconda基于Conda來管理python包和環境。
Anaconda 常用指令
# 創建新環境
conda create -n env_name python=X.X #創建名為env_name,解釋器為pythonx.x的python虛擬環境
# env_name文件可以在Anaconda安裝目錄envs文件下找到。# 進入python環境
# Linux
source activate env_name
# Windows
activate env_name# 進入python環境以后的一些命令
conda list # 查看當前環境安裝了那些包
conda env list
conda info -e
# 查看當前存在那些虛擬環境
conda install package # 安裝第三方python包
# 也可以直接使用pip命令安裝
pip install package# 刪除環境中的某個包
conda remove package
pip uninstall package# 退出當前虛擬環境
source deactivate # Linux
deactivate # Windows# 刪除虛擬環境
conda remove -n env_name