python虚拟环境
为不同的项目创建隔离的Python虚拟环境来帮助保持不同项目所需的依赖关系。
1.什么是Python环境
系统环境变量PATH,当我们在命令行中运行程序时,系统会根据PATH配置的路径列表依次查寻是否有可执行文件python
如果在所有路径列表中都查找不到,就会报报错:'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。
test.py代码中import的模块在哪里找?import的模块包含两类,一类称为标准库,随着python的安装而安装;
另一类称为第三方库,使用pip工具或者自己手动安装的包。模块的搜索路径可通过sys.path查看,主要由可执行文件python所在的位置所决定。
Python环境包括以下内容:环境由运行python解释器的位置所决定。
解释器:python.exe
Lib目录:
libs目录:
Scripts目录:包含一些执行文件
site-pakages目录:默认安装第三方库所在的目录
Tools目录:
pip.exe:包安装管理工具
2.什么是虚拟环境
通过pip(pip3)来安装第三方包,但是由于pip的特性,系统中只能安装每个包的一个版本。有两个项目A和B,如果A和B都要用到某一模块,但版本不相同怎么办?
虚拟环境python环境的多个副本,只是在不同的副本中安装了不同的包。
虚拟环境中一般不包含标准库,直接调用标准库;不包含python解释器运行时所需的依赖文件;可执行文件全部放于Scripts目录等。
如果没有使用虚拟环境时,Python的第三方包都会被pip安装到Python安装路径的site-packages目录下。
当使用虚拟环境时,按照前面的“python3 -m venv myvenv”等方式创建虚拟环境后,可以查看当前目录,会看到几个文件:
bin目录:python3、pip3等可执行文件,其实就是是软链接到Python系统目录(或者是复制的副本)的
lib/python3.10/site-packages:用于该虚拟环境下安装的三方包的存储目录的
所以,通过venv,会将系统的Python软链接到venv的环境下,当用source命令激活虚拟环境时,就会启用该venv下面的python和pip了,同时过程中安装的三方包都是放在venv/lib/pythonx.x/site-packages下面的,这样系统的Python环境是不会受到任何影响的。
3.虚拟环境管理工具
如何去管理虚拟环境
venv(Python 3.3开始,自带内置模块)
如果你使用 Python 3,推荐使用 venv 来替代 virtualenv。两者的使用方式基本相同,唯一不同的是创建虚拟环境的方式。
如果你使用 Python 2,那就只能选择 virtualenv,你需要额外安装它。
-
创建虚拟环境
假设项目名叫moon,创建项目文件,cd进入:
mkdir moon
cd moon
python -m venv moon-venv #moon-venv是虚拟环境的名字。
会在当前目录创建,虚拟环境文件夹moon-venv。
-
激活虚拟环境(就是在环境变量PATH中,插入激活的虚拟环境的路径)
-
进入虚拟环境
Windows下:
moon-venv\Scripts\activate
Linux下:
source moon-venv/bin/activate
或:
. moon-venv/bin/activate
进入后,括号内显示当前环境名
(moon-venv) $
-
切换虚拟环境
的
-
退出虚拟环境(将环境变量PATH从去除掉)
deactivate
-
删除虚拟环境
的
-
vscode中设置虚拟环境
的
-
Pycharm 项目关联新创建的虚拟环境
先在项目目录下创建好虚拟环境,后Python Interpreter 选中虚拟环境。
Pycharm 创建虚拟环境
选中 Python Interpreter
查看更多 Interpreters
添加一个新的 Interpreters
选择 New environment,默认选项即可,确定
-
使用pip管理依赖
简单列一下基本用法,虽然大部分人都很熟悉了。以 Flask 为例
首先是安装依赖:
(moon-venv) $ pip install flask
更新依赖:
(moon-venv) $ pip install --upgrade flask
或是:
(moon-venv) $ pip install -U flask
卸载依赖:
(moon-venv) $ pip uninstall flask
除此之外,还有 pip show flask 命令可以查看某个依赖的详细信息,pip list 列出所有依赖。
从虚拟环境生成 requirement.txt依赖列表
(moon-venv) $ pip freeze > requirements.txt
如果你需要手动开发依赖和生产依赖,可以手动把开发相关的依赖放到单独的文件,比如 requirements-dev.txt。
当你需要在新的机器创建程序运行环境时,(创建虚拟环境后)只需要使用下面的命令从依赖文件安装所有依赖:
(moon-venv) $ pip install -r requirements.txt
太慢则,设置 PyPI 国内镜像
不论是使用 pip,还是 Pipenv、Poetry等工具,安装 Python 包的时候会默认从官方的 PyPI 源下载文件,速度比较慢。
pip
临时设置可以通过 -i 选项:
$ pip install -i https://pypi.doubanio.com/simple/ flask
全局配置文件 Linux中配置文件位置, ~/.pip/pip.conf,新位置 $HOME/.config/pip/pip.conf;Windows中,为 \pip\pip.ini
写入
[global]
index-url = https://pypi.doubanio.com/simple
[install]
trusted-host = pypi.doubanio.com
Pipenv
临时设置–pypi-mirror:
$ pipenv install --pypi-mirror https://pypi.doubanio.com/simple flask
全局(per-project)设置,可以修改 Pipfile 中 [[source]] 小节:
另外一种方式是使用环境变量 PIPENV_PYPI_MIRROR 设置(Windows 系统使用 set 命令):
Poetry / Flit
官方 PyPI 源的 URL 为 https://pypi.org/simple (旧的 URL 为 https://pypi.python.org/simple )
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
网易 https://mirrors.163.com/pypi/simple/
包的版本可能不会及时更新,遇到这种情况可以通过临时换回官方源解决。
pipenv(Python 3.3及更高版本附带的一个脚本)
-
安装
dd
创建虚拟环境
激活虚拟环境
进入虚拟环境
切换虚拟环境
退出虚拟环境
删除虚拟环境
virtualenv(第三方工具)
-
安装
如果没有pip先安装pip,然后
pip install virtualenv
virtualenv --version
创建虚拟环境
激活虚拟环境
进入虚拟环境
切换虚拟环境
退出虚拟环境
删除虚拟环境
conda(安装anaconda时,会自动安装conda工具)
安装
创建虚拟环境
激活虚拟环境
进入虚拟环境
切换虚拟环境
退出虚拟环境
删除虚拟环境
pychrome解释器