WSL是什么?简单点讲WSL是微软在windows上嵌入的Linux系统,直接开启Ubuntu WSL即可在windows上使用Linux了,免去自己装双系统的麻烦。pipenv又是什么鬼?我们为写一个python脚本/程序的时候都需要下载一堆依赖包,不同的项目中的依赖包可能互相冲突,为了避免相互影响,可使用pipenv来安装python虚拟环境,为每个应用单独下载依赖包,相互隔离。默认在WSL下使用pipenv的时候会有些问题,这边文章把几个关键点列出避免踩坑,供参考。

1.Pipenv的常见命令

相比virtualenv,pipenv更加智能,也不需要自己写requirement.txt文件。

1
2
3
4
5
6
pipenv install  # 安装虚拟环境 ,如果工程目录下有Pipfile则会自动安装,如果没有则会先生成Pipfile
pipenv shell # 进入虚拟环境
exit # 退出虚拟环境
pipenv --rm # 删除整个环境 不会删除pipfile
pipenv -h # 查看帮助
pipenv install requests==2.13.0 #安装指定版本包

2.以root账号执行profile使环境变量生效

使用WSL基本都是没有使用bash --login的,这就导致基本环境变量没有加载,需要我们手动加载使环境变量生效。

1
2
$ sudo -s
# source ~/.profile

否则会出现找不到pipenv,参考自superuser

3.修改项目的Pipfile中的url为国内镜像地址

1
2
3
4
5
6
7
8
9
10
11
[[source]]
name = "pypi"
url = "https://repo.huaweicloud.com/repository/pypi/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

url可以修改为华为镜像https://repo.huaweicloud.com/repository/pypi/simple,或者阿里镜像https://mirrors.aliyun.com/pypi/simple。

或者,在环境变量中指定源,这样可以一劳永逸的解决镜像问题。

用户环境变量文件(~/.bash_profile,或者~/.profile)或者系统环境变量文件(/etc/profile)中添加都行。

1
2
export PIPENV_TEST_INDEX=https://repo.huaweicloud.com/repository/pypi/simple
export PATH=$PIPENV_TEST_INDEX:$PATH

编辑完成之后,执行source ~/.profile生效环境变量。

4.修改Pipenv的虚拟环境的默认生成目录

共有三种方法:

  1. export PIPENV_VENV_IN_PROJECT=1 设置这个环境变量,pipenv会在当前目录下创建.venv的目录,以后都会把模块装到这个.venv下。
  2. 自己在项目目录下手动创建.venv的目录,然后运行 pipenv run 或者 pipenv shell pipenv都会在.venv下创建虚拟环境。
  3. 设置WORKON_HOME到其他的地方 (如果当前目录下已经有.venv,此项设置失效

我喜欢通过设置WORKON_HOME到指定目录,在~/.profile下增加环境变量:

1
2
export WORKON_HOME=/home/laomei/pipenv_home
export PATH=$WORKON_HOME:$PATH

然后生效环境变量source ~/.profile即可。


文章首发公众号-梅旭红,欢迎关注,不定期更新。


全文完。