1. 程式人生 > >配置獨立於系統的PYTHON環境

配置獨立於系統的PYTHON環境

user 在服務器 服務 python解釋器 html 是把 dea 訪問 變量

配置獨立於系統的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虛擬環境主要有以下好處:

  1. 能夠創建一個獨立的python環境,和其他用戶的設置都不沖突
  2. 能夠為每一個項目單獨維護一個環境,適應不同的需求

常見的創建虛擬環境的工具

virtualenv

virtualenv is a tool to create isolated Python environments.

virtualenv 主要解決了以下三個問題:

  1. 不同的項目需要同一個python package的不同版本,無法在/usr/lib/python/site-packages文件夾下面同時維護兩個不同版本(eg. tensorflow 1.0 and tensorflow 1.5)
  2. 需要為某個項目永久(或者長時間)保留一個運行環境,(保持本機的主環境長時間不變動不現實,無意識的更新或者其他項目需要更新)
  3. 在服務器的使用中,普通用戶沒有權限訪問/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環境