python 虚拟环境

一直想要一个方便上手的环境配置方案,有时候项目多了管理起来就特别的麻烦。

(以前用的就是virtualenv、virtualenvwrapper-win,后面升级python3后,就用venv,以至于前面的virutalenv和virtualenvwrapper都已经忘了,但是python3 venv,各个版本不好切换。)

因此又在网上搜索查看了一些资料,有推荐Anaconda,安装过后发现太多了,而且导出的requirements 很多引用的本地的,到时候部署到生产环境很麻烦。

又有推荐的miniconda的,但是还没有安装使用,就被另一个方案给安利了。

**pyenv+pyenv-virtualenv ** 可以更好控制版本。

pyenv 安装

pyenv 可以让你更加方便的安装各个python版本,然后利用pyenv-virtualenv就可以直接创建虚拟环境。

但是在windows上只有pyenv-win,没有pyenv-virtualenv,因此也只能使用virtualenv配合virtualenvwrapper-win。也是非常不错的方案。

windows

安装

1
pip install pyenv-win --target E:\pyenv\.pyenv #这里目录可以不存在,会自动创建

设置虚拟环境

在windows中虚拟环境配置 PATH 中添加

1
2
E:\pyenv\.pyenv\bin
E:\pyenv\.pyenv\shims

可能会发现当前还没有shims文件夹,后面会讲他的作用。

命令

in·stall安装:

1
2
pyenv install --list    #版本列表
pyenv install 3.8.0 -v #在线安装指定版本:例如3.8.0

版本控制:

1
2
3
4
5
6
pyenv version    #显示当前版本
pyenv versions #显示所有可用版本及当前版本
pyenv global 3.8.0 #global为全局设置版本,不建议随意使用
pyenv shell 3.8.0 #shell为当前会话设置版本,关闭失效
pyenv local 3.8.0 #local为当前目录设置版本(递归继承)
pyenv shims # 为全局环境设置一个命令环境,因此会创建一个shims文件和上面配合

命令大全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pyenv commands:查看所有pyenv命令
pyenv exec:使用特定Python版本执行某条命令
pyenv global:设置或查看全局Python版本
pyenv hooks:列出给出的pyenv命令的钩子脚本
pyenv init:配置shell环境
pyenv install:安装某个版本的Python
pyenv local:为某个应用设置特定的Python版本
pyenv prefix:显示对应Python版本的路径前缀
pyenv rehash:再哈希pyenv shims(不清楚有什么用,欢迎评论补充)
pyenv root:显示pyenv根目录
pyenv shell:为某个shell设置特定的Python版本(与pyenv local类似)
pyenv shims:列出当前存在的shims(pyenv的工作原理就是在一个叫shims的目录下创建Python解释器的“假版本”,寻找Python应用时先从该目录查找)
pyenv uninstall:卸载某个版本Python
pyenv --version:显示pyenv版本
pyenv version:显示当前Python版本,等价于pyenv version-name+pyenv version-file
pyenv version-file/version-name/version-origin:当前Python版本对应的文件/名字/位置
pyenv whence:列出已安装的一个范围内的Python版本,比如列出本地安装的Python2到Python3的版本,可以使用pyenv whence 2to3
pyenv which:列出可执行文件的绝对路径,比如pyenv which python可以列出python命令的绝对路径

创建虚拟环境

github:https://github.com/pyenv/pyenv-virtualenv

利用pyenv-virtualenv快速创建,windows好像不行

1
2
3
4
pyenv virtualenv 3.7.1 TEST
pyenv activate TEST
pyenv deactivate
pyenv uninstall TEST

传统 virtualenvwrapper

github:https://github.com/davidmarble/virtualenvwrapper-win/

linux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo apt install virtualenv
sudo apt install virtualenvwrapper
sudo find / -name 'virtualenvwrapper.sh'
mkdir ~/.virtualenvs or mkdir ~/envs
export WROKON_HOME=~/.virtualenvs or envs

###iwnodws 设置的时候 要小写 workon_home
source /usr/local/bin/virtualenvwrapper.sh or 使用上马find找到的 virtualenvwrapper.sh
#### 可以在root 下 .bashrc 最后添加一句export WROKON_HOME=/home/dfk/.virtualenvs 把目录移到外面 方便pycharm导入
source ~/.bashrc

mkvirtualenv -p /usr/bin/python3 djangopy3

workon

deactivate

pip freeze > rexx.txt 打印出所有包
pip install -i https://pypi.douban.com/simple -r rexx.txt 安装所有包

windows

1
2
3
4
5
6
7
pip install virtualenvwrapper-win
# 设置 WORKON_HOME = xxx
# 指定版本 创建虚拟环境
mkvirtualenv --python=xxx virtualenv_name
workon # 查看
workon virtualenv_name # 进入虚拟环境
deactivate # 退出虚拟环境

参考:https://segmentfault.com/a/1190000039173896

参考:https://blog.csdn.net/OwangxinyangO/article/details/105712185

参考:https://zhuanlan.zhihu.com/p/27294128

python版本管理 对比:https://stackoverflow.com/questions/41573587/what-is-the-difference-between-venv-pyvenv-pyenv-virtualenv-virtualenvwrappe#:~:text=virtualenvwrapper%20is%20a%20set%20of,switching%20between%20different%20virtualenv%20directories.&text=This%20is%20different%20from%20virtualenv,in%20the%20current%20working%20directory.