刚开始接触并学习一门开发语言,带着不求甚解的想法,其实也挺有好处的:我并不是所有的东西都知道,但是代码跑起来了。
但是时间久了,还是带着这种想法,可能就会遇到一些棘手的问题。比如电脑上不知不觉已经安装了多个python版本,python3.8/3.10/3.11,甚至一些软件中也集成有python解释器;那么我编写的python代码,到底是使用哪个解释器在执行?我通过pip包管理工具安装的依赖包到底在那个地方?为什么已经安装了依赖包,代码提示还是缺少依赖呢?先通过以下命令,查看下电脑上到底有多少个python版本吧:
where python
已经看到3个python解释器了,但是我记得明明也安装了python3.11呀,怎么没有出现呢?
原来在环境变量中没有配置,那就在环境变量中添加下,如图所示:
再次运行命令 where python ,好了已经看到了python3.11:
接下来我们就从以下几个方面入手来探讨下python基础环境:环境变量、版本区分、虚拟环境。
一、环境变量
为了使python解释器生效,我们会通过配置环境变量,也就是将python解释器 python.exe 可执行文件所在的目录添加到系统变量Path中,如此我们就可以在命令行中,通过 python -V 命令来检查python解释器的环境变量是否配置成功。
python的包管理工具pip也是如此,为了使其生效,我们将pip.exe可执行文件所在的目录也添加到系统变量Path中。此时我们也同样可以通过 pip -V 命令来查看包管理工具是否能正常使用。
#1.配置python解释器环境变量:将“C:\Python311”目录添加到Path系统变量中,通过以下命令查看是否生效 python -V #配置pip环境变量:将“C:\Python311\Scripts”目录添加到Path系统变量中,通过以下命令查看是否生效 pip -V
如果不配置环境变量,要使用python解释器,比如我们我们同样要查看python解释器的版本,使用如下命令:
C:\Python311\python.exe -V #如果路径中包含空格或特殊字符(如括号、等号等),通常需要使用引号将路径括起来,以确保命令解释器正确地识别路径。这是因为命令行解释器会将空格视为命令参数的分隔符 "C:\Python311\python.exe" -V
二、版本区分
就拿我电脑上的三个python解释器来说吧,我通过 python -V 获取的到底是哪个python解释器的版本呢?如果使用pip安装的python包,到底安装在什么地方呢?
#1.查看各解释器的版本 "C:\Program Files\Odoo 16.0.20230810\python\python.exe" -V C:\Python311\python.exe -V C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe -V #2.查看各解释器的pip版本 #python -m pip:表示使用python解释器自带的包管理工具 "C:\Program Files\Odoo 16.0.20230810\python\python.exe" -m pip -V C:\Python311\python.exe -m pip -V C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe -m pip -V #3.查看解释器对应的pip管理工具下载文件包的位置:pip show requests "C:\Program Files\Odoo 16.0.20230810\python\python.exe" -m pip show requests C:\Python311\python.exe -m pip show requests C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe -m pip show requests #4.使用 pip 安装包到指定位置:在特定情况下方便整体复制粘贴到相似的环境 pip install package_name --target D:\MyPackages
我们配置了两个版本的python环境变量,那么在cmd命令行中,查看的python解释器版本和pip的下载位置,究竟是哪个python版本呢?在cmd命令行工具中,谁的配置靠前就是谁的。
三、虚拟环境
虚拟环境的主要目的在于隔离项目的第三方包,而不是复制整个Python安装。但虚拟环境本身依赖于系统的Python安装目录中的标准库文件夹,当创建一个虚拟环境时,它会创建一个隔离的目录结构,其中包含以下内容:
- 在 Scripts(Windows)或 bin(Linux/Mac)目录下包含一个指向系统Python解释器的副本或符号链接。
- 在 Lib 目录下的 site-packages 目录用于安装虚拟环境中专用的第三方包。
- pyvenv.cfg 文件,其中指定了虚拟环境的一些配置,包括指向系统Python安装的位置
如果删除系统中安装的Python,那么使用该Python版本创建的虚拟环境将无法独立运行,原因如下:
- 虚拟环境依赖于系统Python的解释器。如果系统中安装的Python被删除,虚拟环境中的解释器引用将失效,无法执行Python代码。
- 虚拟环境依赖系统Python安装中的标准库。如果系统Python被删除,标准库将无法访问,导致虚拟环境无法导入标准库模块。
windows中虚拟环境的用法:
#1.安装虚拟环境管理器:在 Windows 上,Python 通常附带了一个名为 venv 的虚拟环境管理器。可以使用以下命令来验证是否已安装 venv: python -m venv --help #2.创建虚拟环境:在命令提示符中,进入你想要创建虚拟环境的目录,然后运行以下命令来创建虚拟环境: python -m venv odoo16_venv #3.激活虚拟环境: odoo16_venv\Scripts\activate #4.在虚拟环境中安装python依赖包: pip install package_name #5.退出虚拟环境: deactivate
ubuntu中虚拟环境的用法:
#1.安装 Python: python3 --version #如果没有安装 Python,你可以使用以下命令安装: sudo apt update sudo apt install python3 #2.安装虚拟环境管理器: sudo apt update sudo apt install python3-venv #3.创建虚拟环境:在终端中,进入你想要创建虚拟环境的目录,并运行以下命令来创建虚拟环境: python3 -m venv odoo16_venv #4.激活虚拟环境: source myenv/bin/odoo16_venv #5.在虚拟环境中安装python依赖包: pip install package_name #6.退出虚拟环境: deactivate