Pipenv & 虚拟环境

pip 的安装 & 更新

确保您已经有了 Python 和 pip

在您进一步之前,请确保您有 Python,并且可从您的命令行中获得。 您可以通过简单地运行以下命令来检查:

1
2
3
$ python --version
$ pip --version

关键步骤

来到命令行界面,执行

1
2
python2-m pip install --upgrade pip --force-reinstall
python3-m pip install --upgrade pip --force-reinstall
1
2
3
# 分别重装两个python版本的pip
python -m pip install --upgrade pip --force-reinstall,显示重新安装成功。
python3 -m pip install --upgrade pip --force-reinstall,显示重新安装成功。

查看版本

1
2
3
4
输入pip2 -V ,pip3 -V 查看版本信息 

#卸载
python -m pip uninstall pip

卸载 安装pip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
安装pip环境:
sudo easy_install pip

Mac 卸载自己安装的 python
第一步:删除框架
sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.6
第二步:删除应用目录
sudo rm -rf "/Applications/Python 3.6"
第三步:删除指向python的链接
cd /usr/local/bin/
ls -l /usr/local/bin | grep '/Library/Frameworks/Python.framework/Versions/3.6' # 查看链接
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/x.x' | awk '{print $9}' | tr -d @ | xargs rm
brew prune # 清除链接和目录


升级pip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ python3
Python 3.6.6 (default, Sep 5 2018, 03:40:52)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pipenv.vendor.pip_shims import get_installed_distributions, FrozenRequirement
>>> FrozenRequirement
<class 'pipenv.patched.notpip._internal.operations.freeze.FrozenRequirement'>
>>> get_installed_distributions
<function get_installed_distributions at 0x7f4298e859d8>
>>> import pipenv
>>> pipenv.__version__
'2018.10.9'





I'm currently using

python3 -m pip install pip==10.0.1
python3 -m pip install pipenv==2018.5.18
Once #2924 is fixed and released, you can upgrade again to the latest and greatest.

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pipenv

以后只需运行pip(2) install XXXpip3 install XXX即可安装各自的python包。

注意,使用Python2.Xpip2安装东西的时候要注意权限问题,如果当前用户是普通用户,需要切换到管理员用户 sudo -i

pip的使用

pip 为python的包管理器. 最新的python2和python3都已经自带pip.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 显示帮助
pip
pip --help
pip install -h # 显示安装的帮助

# 安装包
pip install PackageName # latest version
pip install PackageName==1.0.4 # specific version

# 包列表
pip list # 显示已安装的包
pip list --outdated # 显示有更新的包

# 显示包的简介, 以及包的源码文件
pip show --files PackageName

# 更新包
pip install --U PackageName
pip install --upgradwe PackageName
pip install --upgrade pip # pip更新自己
python -m pip install --U pip # -m 表示调用python模块, 这里就是要调用pip

# 卸载包
pip uninstall PackageName

# 遇到SSL问题, 下载失败时, 信任下载源即可
yum install openssl -y
# [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:XXX)
pip list --outdated --trusted-host pypi.python.org
pip install --trusted-host pypi.python.org PackageName





pip3 install --upgrade pip --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple





# 如果还是不行, 再试试下面这句. index-url 将源指定为http格式, 不用https了, 然后设置为信任.
# 指定单次下载包源
pip install <包名> -i https://mirrors.aliyun.com/pypi/simple
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org

PackageName
python3 -m pip install --upgrade --force pip



# 安装
sudo easy_install pip

# 列出已安装的包
pip freeze or pip list

# 导出requirements.txt
pip freeze > requirements.txt

# 在线安装
pip install PackageName 或
pip install -r requirements.txt

通过使用== >= <= > <来指定版本,不写则安装最新版

requirements.txt内容格式为:

APScheduler==2.1.2
Django==1.5.4

安装本地安装包
pip install <目录>/<文件名> 或 pip install --use-wheel --no-index --find-links=wheelhouse/ PackageName

PackageName前有空格

可简写为

pip install --no-index -f=<目录>/ PackageName

# 卸载包
pip uninstall PackageName 或 pip uninstall -r requirements.txt

# 升级包
pip install -U PackageName

或:pip install PackageName --upgrade

升级pip
pip install -U pip

# 显示包所在的目录
pip show -f PackageName

# 搜索包
pip search <搜索关键字>

# 查询可升级的包
pip list -o

# 下载包而不安装
pip install PackageName -d <目录> 或 pip install -d <目录> -r requirements.txt

# 打包
pip wheel PackageName

pip安装

pip documentation

readthdoc


更换国内pypi镜像

国内pypi镜像

指定单次安装源

1
pip install <包名> -i https://mirrors.aliyun.com/pypi/simple

指定全局安装源

unixmacos,配置文件为:$HOME/.pip/pip.conf
windows上,配置文件为:%HOME%\pip\pip.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[global]
timeout = 6000
index-url = https://mirrors.aliyun.com/pypi/simple

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask

#pypi
配置方法
在文件

~/.pip/pip.conf
中添加或修改:

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

Pipenv & 虚拟环境

Pipenv安装相互独立的虚拟环境

pipenv:Pyhton 官方推荐的新一代包管理工具。 它综合了 virtualenv , pip 和 pyenv 三者的功能。能够自动为项目创建和管理虚拟环境。
pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息,避免构建错误。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。

安装pipenv

如果你是Mac电脑,那么推荐使用Homebrew来安装。

1
$ brew install pipenv

如果不是Mac电脑,建议 使用Python3的pip3 安装:

1
2
3
$ pip3 install pipenv #pyhton3
or
$ pip install --user pipenv #python2 指定用户

执行pipenv,可以查看pipenv的帮助信息:

1
pipenv

其他方式后面有链接地址

安装 Pipenv

Pipenv 是 Python 项目的依赖管理器。如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它们在思路上与这些工具类似。尽管 pip 可以安装 Python 包, 但仍推荐使用 Pipenv,因为它是一种更高级的工具,可简化依赖关系管理的常见使用情况。

使用 pip 来安装 Pipenv:

1
$ pip install --user pipenv

注解

这进行了 用户安装,以防止破坏任何系统范围的包。如果安装后, shell 中没有pipenv,则需要将 用户基础目录 的 二进制文件目录添加到 PATH 中。

在 Linux 和 macOS 上,您可以通过运行 python -m site --user-base 找到 用户基础目录,然后把 bin 加到目录末尾。比如,上述命令典型地会打印出~/.local`~会扩展为您的家目录的局对路径),然后将~/.local/bin添加到PATH中。您可以通过 [修改 ~/.profile](https://stackoverflow.com/a/14638025) 永久地设置PATH`。

在 Windows 上,您通过运行 py -m site --user-site 找到用户基础目录,然后 将 site-packages 替换为 Scripts。比如,上述命令可能返回为C:\Users\Username\AppData\Roaming\Python36\site-packages,然后您需要在PATH 中包含 C:\Users\Username\AppData\Roaming\Python36\Scripts。 您可以在 控制面板.aspx) 中永久设置用户的 PATH。您可能需要登出 PATH 更改才能生效。

安装 Pipenv

Pipenv 是 Python 项目的依赖管理器。如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它们在思路上与这些工具类似。尽管 pip 可以安装 Python 包, 但仍推荐使用 Pipenv,因为它是一种更高级的工具,可简化依赖关系管理的常见使用情况。

使用 pip 来安装 Pipenv:

1
$ pip install --user pipenv

注解

这进行了 用户安装,以防止破坏任何系统范围的包。如果安装后, shell 中没有pipenv,则需要将 用户基础目录 的 二进制文件目录添加到 PATH 中。

在 Linux 和 macOS 上,您可以通过运行 python -m site --user-base 找到 用户基础目录,然后把 bin 加到目录末尾。比如,上述命令典型地会打印出~/.local`~会扩展为您的家目录的局对路径),然后将~/.local/bin添加到PATH中。您可以通过 [修改 ~/.profile](https://stackoverflow.com/a/14638025) 永久地设置PATH`。

在 Windows 上,您通过运行 py -m site --user-site 找到用户基础目录,然后 将 site-packages 替换为 Scripts。比如,上述命令可能返回为C:\Users\Username\AppData\Roaming\Python36\site-packages,然后您需要在PATH 中包含 C:\Users\Username\AppData\Roaming\Python36\Scripts。 您可以在 控制面板.aspx) 中永久设置用户的 PATH。您可能需要登出 PATH 更改才能生效。

pipenv使用方法命令名  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
命令创建pipenv
pipenv启动pipenv 
pipenv shell(为存在虚拟环境可自动创建)
退出pipenv  exit
查找所有安装包  pip list
环境内包的依赖展示  pipenv graph
查找虚拟环境的路径  pipenv --venv
卸载安装包  pipenv uninstall
卸载pipenv虚拟环境 pipenv --rm
1、将目录更改为包含你的Python项目的文件夹,并启动Pipenv,
cd my_project 
pipenv ·install 

---------------------

#创建项目虚拟环境
$pipenv install
#指定python版本创建虚拟环境
$pipenv --two
$pipenv --three
$pipenv --python 3.6.5

#升级所有包
$pipenv update


#升级某一个包,如:redis
$pipenv update redis

#显示项目路径
$pipenv --where

#显示virtualenv路径
$pipenv --venv

#显示python虚拟解释器
$pipenv --py

#激活虚拟环境
$pipenv shell

#安装urllib模块
$pipenv install urllib


#查看目前安装的库及依赖关系
$pipenv graph

#检查包的安全性
#pipenv check

#激活虚拟环境并运行shell命令
$pipenv run which python

#从文件导入包
$pipenv install -r requirements.txt

#冻结软件包和版本依赖关系,生成Pipfile.lock文件
$pipenv lock -r

#安装开发包
$pipenv install --dev pytest
pipenv install [moduel] --dev 安装包到开发环境

#使用系统上的python自带的包组件
$pipenv --three --site-packages
# 卸载包


pipenv uninstall[module] 卸载包
pipenv uninstall --all or --all-dev 卸载所有包

为项目建立虚拟环境

我们希望在每个项目的根目录下保存虚拟环境目录(.venv),需要在 .bashrc 或 .bash_profile 中配置如下:

1
export PIPENV_VENV_IN_PROJECT=1

要想使配置生效,执行下source ~/.bashrc或者source ~/.bash_profile。
接下来我们为项目创建虚拟环境。

1
2
3
$ mkdir pipenv_demo
$ cd pipenv_demo
$ pipenv --three # 初始化一个python3虚拟环境,如果想初始化pyhton2的虚拟环境,则使用pipenv --two123

创建完虚拟环境之后,在pipenv_demo目录下将会看到一个.venv的目录,这个目录就是pipenv_demo项目的虚拟环境。使用具体的python版本创建虚拟环境,可以执行:

1
pipenv --python 2.7.14
1
2
pip install -p    # 没有参数会自动寻找 Pipfile 文件
pip install -p Pipfile.lock # 根据 Pipfile.lock 安装指定依赖

为项目安装第三方依赖包

为项目安装自己的依赖包到虚拟环境中,使每个项目拥有相互独立的第三方包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中:

1
2
$ pipenv install flask
$ pipenv install pytest --dev # 用于区分需要部署到线上的开发包、只需要在测试环境中执行的包12

执行完上面的命令后,检查一下是否安装成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
$ pipenv graph
Flask==0.12.2
- click [required: >=2.0, installed: 6.7]
- itsdangerous [required: >=0.21, installed: 0.24]
- Jinja2 [required: >=2.4, installed: 2.10]
- MarkupSafe [required: >=0.23, installed: 1.0]
- Werkzeug [required: >=0.7, installed: 0.14.1]
pytest==3.4.2
- attrs [required: >=17.2.0, installed: 17.4.0]
- pluggy [required: >=0.5,<0.7, installed: 0.6.0]
- py [required: >=1.5.0, installed: 1.5.2]
- setuptools [required: Any, installed: 38.6.0]
- six [required: >=1.10.0, installed: 1.11.0]12345678910111213

可看到已经安装了Flask和pytest,还列出了他们的依赖包。
这是观察项目的根目录下,生成了两个文件,分别是Pipfile和Pipfile.lock。这两个文件记录了此项目的第三方依赖包,这两个文件的区别是 Pipfile中安装的包不包含包的具体版本号,而Pipfile.lock是包含包的具体的版本号的

更新 pypi源来提高依赖库安装的速度

在使用pipenv的时候,常常会在安装的时候,一直卡在了 Locking 这里,通过加上 -v 参数,可以看到安装过程中的步骤信息,卡在了下载那里,这时应该可以意识到是因为网络的原因,pipenv创建的 Pipfile 中默认的pypi源是python官方的 https://pypi.python.org/simple。我们国内用户访问下载的时候会很慢。

所以,我一般会在创建好Pipfile以后,修改到文件中 source 块下的 url 字段,设置为国内的 pypi 源就好了,我推荐的是清华的pypi源或者阿里源,具体设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"1234

——————————————————————————————————————————————————————
$cat Pipfile

[[source]]
url = "https://pypi.org/simple" #用来配置安装包的源,可以更换国内的源,注意在更好没有https的源时会不信任站点将verify_ssl设置为false
verify_ssl = true
name = "pypi"

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
uerify_ssl = true
name = 'tuna'

[packages]
requests = {version = "*", index = 'tuna''} #为不同的包指定不同的安装源
maya = {version = "*", index = "pypi"

[packages] #安装的包及版本关系显示
redis = "*"

[dev-packages] #安装的开发包

[requires] #指定项目运行的python版本,你可以在此指定一个系统上没有的版本,在创建虚拟环境是pipenv会通过pyenv下载指定版本的python
python_version = "3.6"

linux下的双版本

1
2
3
4
5
6
7
8
9
10
11
sudo python2 hello.py
sudo python3 hello.py
# 指定版本运行源码

sudo pip2 install PackageName
sudo pip3 install PackageName
# 直接使用pip+版本

sudo python2 -m pip install PackageName
sudo python3 -m pip install PackageName
# -m 表示调用python模块, 这里就是要调用pip

源码内指定版本

将需要指定的python版本放在源码的第一行.
支持如下方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env
# 使用默认的系统环境

#!python2
#!python3
#!/usr/bin/env python2
#!/usr/bin/env python3
# 指定python版本

#!/usr/bin/python2
#!/usr/bin/python3
#!/usr/local/bin/python2.7
#!/usr/local/bin/python3.5
# 通过路径指定版本

举个python3的例子, 格式如下:

1
2
3
4
5
#! python3
# coding: utf-8

import logging
# ... 源码

##

Pipenv官网

Pipenv & 虚拟环境

参考链接

py.qi

Pipenv: Python Dev Workflow for Humans

via


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!