python虛擬環境 + 批量pip + 換源
虛擬環境
曾經我是一個小白,不管運行什么項目都用一個環境,后來項目多了,有的是Django1.11的有的是Django2的,有的項目只能在3.6上運行,經歷過的都明白吧。所以整理了幾個常見的換虛擬環境的方法。
一、使用virtualenv
1. 使用pip
pip install virtualenv
2. 創建運行環境
virtualenv [虛擬環境名稱]
virtualenv venv
#如果不想使用系統的包,加上–no-site-packeages參數
virtualenv --no-site-packages 創建路徑名
3. 激活環境
linux:
$ cd venv
$ source ./bin/activate
Windows 10:
> cd venv
> .\Scripts\activate.bat
4. 退出環境
linux:
$ deactivate
Windows 10:
> .\Scripts\deactivate.bat
5. 刪除環境
沒有使用virtualenvwrapper前,可以直接刪除venv文件夾來刪除環境
6. 使用環境
進入環境后,一切操作和正常使用python一樣 安裝包使用pip install 包
二、使用Virtualenvwrapper
Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它可以做: - 將所有虛擬環境整合在一個目錄下 - 管理(新增,刪除,復制)虛擬環境 - 快速切換虛擬環境
1. 安裝
# on Windows
pip install virtualenvwrapper-win
# on macOS / Linux
pip install --user virtualenvwrapper
# then make Bash load virtualenvwrapper automatically
echo "source virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
2. 創建虛擬環境
# on macOS/Linux:
mkvirtualenv --python=python3.6 venv
# on Windows
mkvirtualenv --python=python3 venv
3. 激活環境
workon #列出虛擬環境列表
workon [venv] #切換環境
4. 退出環境
deactivate
5. 刪除環境
rmvirtualenv venv
6. 其他有用指令
pip freeze #查看當前安裝庫版本
#創建 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表
#保持部署相同,一鍵安裝所有包
pip install -r requirements.txt
pip freeze > requirements.txt
lsvirtualenv #列舉所有的環境
cdvirtualenv #導航到當前激活的虛擬環境的目錄中,相當於pushd 目錄
cdsitepackages # 和上面的類似,直接進入到 site-packages 目錄
lssitepackages #顯示 site-packages 目錄中的內容
三、 使用conda管理
conda可以直接創建不同python版本的虛擬環境。前面講的virtualenv只是指定創建不同python版本的虛擬環境,前提是你的電腦上已經安裝了不同版本的python,與conda相比沒有conda靈活。
1. 安裝
下載anaconda安裝的python直接可以使用conda工具
2. 創建虛擬環境
創建不同的python版本,直接寫出版本號就好了,還可以同時安裝想要的庫。
# Python 2.7
$ conda create -n venv python=2.7
# Python 3.4
$ conda create -n venv python=3.4
# Python 3.5
$ conda create -n venv python=3.5
3. 激活虛擬環境
#on windows
activate venv
#on linux
source activate venv
4. 退出虛擬環境
#on windows
deactivate
#on linux
source deactivate
5. 刪除虛擬環境
# 刪除一個已有環境
conda remove --name venv --all
6. 其他有用指令
# 列出系統存在虛擬環境
conda info -e
conda env list
# 查看當前環境下已安裝的包
conda list
# 查看某個指定環境的已安裝包
conda list -n venv
# 查找package信息
conda search numpy
# 安裝package
conda install -n venv numpy
# 如果不用-n指定環境名稱,則被安裝在當前激活環境
# 也可以通過-c指定通過某個channel安裝
# 更新package
conda update -n venv numpy
# 刪除package
conda remove -n venv numpy
四. 使用pipenv管理
pipenv是Python官方推薦的包管理工具。 它綜合了 virtualenv , pip 和 pyenv 三者的功能。能夠自動為項目創建和管理虛擬環境。如果你使用過requests庫,就一定會愛上這個庫,因為是同一個大神出品。 pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息,避免構建錯誤。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。
1. 安裝
pip install pipenv
2. 創建虛擬環境
$ cd myproject
$ pipenv install # 創建環境
$ pipenv install requests # 或者直接安裝庫
如果不存在pipfile,會生成一個pipfile,並且如果有的庫添加會自動編輯該文件,不會我們手動更新requirements.txt文件了。
3. 激活Pipenv Shell
$ pipenv shell
$ python --version
批量pip
在包內打開窗口輸入
pip install -r requirements.txt
將一個python環境導為requirements.txt的指令為為:
pip freeze >requirements.txt
pip換源
一次性使用
可以在使用pip的時候加參數-i https://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install SomePackage -i https://pypi.tuna.tsinghua.edu.cn/simple
這樣就會從清華這邊的鏡像去安裝SomePackage庫。
可選國內源:
- 豆瓣:http://pypi.douban.com/simple/
- 中科大:https://pypi.mirrors.ustc.edu.cn/simple/
- 清華:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里雲 http://mirrors.aliyun.com/pypi/simple/
永久修改,一勞永逸
linux下,修改 ~/.pip/pip.conf (沒有就創建一個), 修改 index-url 為國內鏡像地址,內容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
windows下,直接在user目錄中創建一個pip目錄,如:C:\Users\xx\pip,新建文件pip.ini,內容如下
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
pip常見問題
HTTPSConnectionPool(host='mirrors.tuna.tsinghua.edu.cn', port=443): Read timed
解決:
sudo pip install --default-timeout=100 future
當然,也可以放在設置文件內,即上文換源的設置文件
[global]
timeout = 60000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple #使用清華大學鏡像源
[install]
use-mirrors = true
mirrors = https://pypi.tuna.tsinghua.edu.cn