多Python版本下pip安装的可执行脚本调用与版本指定问题
多Python版本下确定与指定pip安装脚本(如pytest)的调用版本
当本地同时存在多个Python版本(比如Python3.10和Python3.11)且都通过pip安装了同一可执行脚本(如pytest)时,直接执行脚本命令的相关逻辑和指定方法如下:
一、直接执行pytest时如何确定调用的版本?
直接在命令行输入pytest时,系统会按照PATH环境变量中目录的先后顺序查找名为pytest的可执行文件,找到的第一个就是会被调用的版本。
要验证当前调用的是哪个版本,可以用以下方法:
- 查看可执行文件的路径(Linux/macOS):
which pytest - 查看可执行文件的路径(Windows命令提示符):
where pytest - 直接查看版本号:
pytest --version
二、如何指定调用特定版本的pytest?
有三种可靠的方法可以指定调用对应Python版本下的脚本:
1. 通过对应Python版本的-m参数调用
这是最稳妥的方式,直接让指定的Python解释器运行对应环境中的模块脚本,完全不受PATH顺序影响:
- 调用Python3.11下的pytest:
python3.11 -m pytest - 调用Python3.10下的pytest:
python3.10 -m pytest
(注:Windows下可能需要用py -3.11 -m pytest或python311 -m pytest,取决于Python的安装命名)
2. 直接调用对应版本的脚本全路径
通过which/where命令找到不同版本pytest的具体路径后,直接输入全路径执行:
比如Linux下查到Python3.10的pytest路径是/usr/bin/pytest-3.10,Python3.11的是/usr/local/bin/pytest-3.11,则:
/usr/bin/pytest-3.10 --version
3. 使用虚拟环境隔离版本
为不同Python版本创建独立的虚拟环境,激活环境后执行的脚本就是该环境对应的版本:
- 创建并激活Python3.10的虚拟环境(Linux/macOS):
python3.10 -m venv venv310 source venv310/bin/activate - 激活后安装pytest并调用:
pip install pytest pytest --version - 退出虚拟环境:
deactivate
(Windows下激活命令为venv310\Scripts\activate.bat)
内容的提问来源于stack exchange,提问作者oeter
相关产品推荐
相关产品推荐

