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库。

可选国内源:

永久修改,一劳永逸

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

最新文章

  1. C# List 的一些操作 (两List元素是否想同,List是否包含在另一个List中)
  2. 【HTML5】浅析html使用SSE(Server-Sent Events)连接JSP
  3. JavaScript 数据类型判断
  4. [archlinux][hardware] 查看SSD的使用寿命
  5. CodeForces 688A-Opponents
  6. 第四讲 :hibernate中的session
  7. 日志文件C++ 时间 文件 行数
  8. bzoj2333
  9. PHPCMS V9二次开发]自定义字段模型-文本组
  10. ResourceString的用法
  11. TinyMapper 使用总结
  12. Linux基础知识梳理
  13. 现有项目中集成Flutter
  14. SSM-网站后台管理系统制作(4)---Ajax前后端交互
  15. cad巧用插件自定义填充图形
  16. HDU 1506 & 1505 - Largest Rectangle in a Histogram & City Game
  17. avr定时器做的正弦波
  18. python绝对路径相对路径函数
  19. 【原】Ubuntu virtual terminal
  20. 说说为什么会有ssl.CertificateError报错

热门文章

  1. python数据类型转换&&格式化输出
  2. 【Spring注解驱动开发】使用@Import注解给容器中快速导入一个组件
  3. [Web][学习随笔]Session&cookie
  4. Dedecms 目标仿站的学习视频
  5. 使用Java代码配置MyBatis Generator
  6. c常用函数-atoi 和 itoa
  7. JATG引脚定义
  8. MySQL的使用方法和视图、索引、以及存储过程的一些简单方法
  9. docker镜像瘦身思路
  10. MySQL 视图 事务 索引 外连接