Linux下安装Pipenv
前言
因为manjaro自带了python,而且在滚动更新的优势下,python版本是最新的,没必要再装anaconda或miniconda,我只需要一个包管理器,因此感觉不必使用这种二次发行版。
Pipenv简介
pipenv是python的包管理器,据说是requests的作者开发的?它结合了pip和virtualenv两个命令,有以下几个特点
不需要再分别使用
pip
和virtualenv
无需手动维护
requirements.txt
,依赖列表可以通过Pipfile
自动维护等
安装pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
注意,此时pip的模块安装在/usr目录下,如果要使用pip安装模块,需要通过--user为用户安装
安装pipenv
pip install --user pipenv
这安装在了用户的$HOME/.local/bin目录下,需要自行将该目录添加到PATH中
打开.bashrc,添加
export PATH="家目录/.local/bin:$PATH"
pipenv的更新
pip install --user --upgrade pipenv
使用pipenv
初始化虚拟环境
pipenv --three # python3
pipenv --two # python2
这会在当前目录下创建一个Pipfile文件,自动记录所有安装的和卸载的模块
进入虚拟环境,
pipenv shell
注意,直接使用这个命令可以自动初始化虚拟环境
退出虚拟环境
exit
修改源
vim Pipfile
将[source]下的url那栏修改为清华镜像源
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
目前好像没有设置默认源的方法,可能每个虚拟环境都要自行设置源,给一个稍微方便的方法,因为在Pipfile
同目录下,可以使用
sed -i 's/pypi.org/pypi.tuna.tsinghua.edu.cn/g' Pipfile
来更改url
所以我就在.zshrc(或你的.bashrc)中加了一行
alias tsinghua="sed -i 's/pypi.org/pypi.tuna.tsinghua.edu.cn/g' Pipfile"
这样在创建完虚拟环境之后,直接输入
tsinghua
就可以自行修改源了
与pip的交互
安装requirements.txt
的模块并记录到Pipfile
中
pipenv install -r requirements.txt
生成可供pip
使用的requirements.txt
pipenv run pip freeze >> requirements.txt
安装模块
pipenv install # 比如 pipenv install numpy==1.15.4
安装项目的所有依赖
pipenv install --dev
根据Pipfile安装项目的依赖
卸载模块
pipenv uninstall
pipenv uninstall --all # 卸载所有模块
查看一些位置
pipenv --where # 项目位置
pipenv --venv # 虚拟环境位置
pipenv --py # 解释器位置
移除虚拟环境
pipenv -rm
查看目前安装的依赖
pipenv graph
关于pipenv lock命令
pipenv lock
生成了一个Pipfile.lock
,其中记录了模块的版本,默认情况下在Pipfile中并没有模块的版本(除非你使用pipenv install numpy==1.15.4
这样的命令来安装)
如果新的版本的模块使得我们代码中功能无法使用的话,我们可以通过Pipfile.lock
安装模块,这样固定了我们最初搭建虚拟环境时使用的模块版本,使用Pipfile.lock
进行安装的命令
pipenv sync
不过带上Pipfile.lock的时候,安装模块会自动lock,过程会很慢,因此建议一切依赖部署好了之后再使用pipenv lock
,em,不知道输了什么命令,好像自动会lock?那就无视这段话吧
其他功能
直接从url安装模块
[各种命令的详细参数](https://pipenv.readthedocs.io/en/latest/
)
插件
进入项目目录自动激活虚拟环境,这个似乎只是针对fish shell的插件
参考
[1]https://github.com/pypa/pipenv/issues/954
[2]https://github.com/rwillmer/pipenv/commit/835196dd0f0ceea1788cc36f870bf1724c6c4438
[3]https://github.com/pypa/pipenv/