刚开始接触并学习一门开发语言,带着不求甚解的想法,其实也挺有好处的:我并不是所有的东西都知道,但是代码跑起来了。

但是时间久了,还是带着这种想法,可能就会遇到一些棘手的问题。比如电脑上不知不觉已经安装了多个python版本,python3.8/3.10/3.11,甚至一些软件中也集成有python解释器;那么我编写的python代码,到底是使用哪个解释器在执行?我通过pip包管理工具安装的依赖包到底在那个地方?为什么已经安装了依赖包,代码提示还是缺少依赖呢?先通过以下命令,查看下电脑上到底有多少个python版本吧:

1
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
2
3
4
#1.配置python解释器环境变量:将“C:\Python311”目录添加到Path系统变量中,通过以下命令查看是否生效
python -V
#配置pip环境变量:将“C:\Python311\Scripts”目录添加到Path系统变量中,通过以下命令查看是否生效
pip -V

如果不配置环境变量,要使用python解释器,比如我们我们同样要查看python解释器的版本,使用如下命令:

1
2
3
C:\Python311\python.exe -V
#如果路径中包含空格或特殊字符(如括号、等号等),通常需要使用引号将路径括起来,以确保命令解释器正确地识别路径。这是因为命令行解释器会将空格视为命令参数的分隔符
"C:\Python311\python.exe" -V

二、版本区分

就拿我电脑上的三个python解释器来说吧,我通过 python -V 获取的到底是哪个python解释器的版本呢?如果使用pip安装的python包,到底安装在什么地方呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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

#5.如果遇到网络问题,可以设置镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

我们配置了两个版本的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
2
3
4
5
6
7
8
9
10
#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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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

作者 菜园君