在 Ubuntu 虚拟机中确认 Python 安装位置,主要取决于你希望查看的是可执行文件路径、标准库路径还是第三方包路径。由于 Ubuntu 系统中可能存在多个 Python 版本(如系统自带、手动编译、虚拟环境等),建议按照以下层级进行确认:
1. 快速查找可执行文件路径(最常用)
这是确认当前终端调用的 Python解释器位于哪里的最直接方法。
1.1 使用 which 命令
bash
#打开终端,输入命令
which python3
#得到结果
/usr/bin/python3
常见输出:/usr/bin/python3(系统自带)或 /usr/local/bin/python3(手动安装)。
说明:如果安装了特定版本(如 Python 3.8),可以使用 which python3.8。
1.2 使用 command -v 命令
bash
#输入命令
command -v python3
#得到结果
/usr/bin/python3
该命令比 which 更可靠,因为它能反映 shell 内部的命令解析结果(包括别名和函数)。
1.3 查看符号链接真实路径
Ubuntu 中的 python3 往往是一个符号链接。若要查看其最终指向的具体版本文件,可使用:
bash
#输入命令
readlink -f $(which python3)
#得到结果
/usr/bin/python3.10
#例如,显示 /usr/bin/python3.10,表明实际使用的是 Python 3.10。
2. 获取当前正在使用的解释器绝对路径
如果你已经在 Python 环境中,或者想确保获取的是当前运行环境的确切路径(特别是在虚拟环境中),这种方法最准确。
使用 Python 内置模块在终端中运行以下命令:
bash
#输入命令
python3 -c "import sys; print(sys.executable)"
#得到结果
/usr/bin/python3
场景优势:如果你激活了虚拟环境(venv),此命令会返回虚拟环境内的 Python 路径(如 /home/user/project/venv/bin/python),而不是系统全局路径。
3. 查找相关文件和目录结构
如果你需要知道 Python 的库文件、头文件或手册页的位置,可以使用 whereis 或 dpkg。
使用 whereis 命令
bash
#输入命令
whereis python3
#得到结果
python3: /usr/bin/python3 /usr/lib/python3 /etc/python3 /usr/share/python3 /usr/share/man/man1/python3.1.gz
含义:分别列出了二进制文件、库文件和头文件的路径。
使用 dpkg 查询包安装路径(仅限 apt 安装的 Python)
bash
#输入命令
dpkg -L python3
#得到结果
/.
/usr
/usr/bin
/usr/lib
/usr/lib/valgrind
/usr/lib/valgrind/python3.supp
/usr/share
/usr/share/doc
/usr/share/doc/python3
/usr/share/doc/python3/copyright
/usr/share/doc/python3/python-policy.txt.gz
/usr/share/doc/python3.10
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/python3
/usr/share/man
/usr/share/man/man1
/usr/share/pixmaps
/usr/share/python3
/usr/share/python3/python.mk
/usr/share/python3/runtime.d
/usr/share/python3/runtime.d/public_modules.rtinstall
/usr/share/python3/runtime.d/public_modules.rtremove
/usr/bin/pdb3
/usr/bin/pydoc3
/usr/bin/pygettext3
/usr/share/doc/python3/README.Debian
/usr/share/doc/python3/changelog.Debian.gz
/usr/share/doc/python3.10/python-policy.txt.gz
/usr/share/man/man1/pdb3.1.gz
/usr/share/man/man1/pydoc3.1.gz
/usr/share/man/man1/pygettext3.1.gz
/usr/share/pixmaps/python3.xpm
这将列出通过 apt 安装的 Python 软件包所包含的所有文件路径。
4. 查看标准库和第三方包的安装目录
开发时经常需要知道 import 的模块是从哪里加载的,查看模块搜索路径
bash
#输入命令
python3 -c "import sys; print('\n'.join(sys.path))"
#得到结果
/usr/lib/python310.zip
/usr/lib/python3.10
/usr/lib/python3.10/lib-dynload
/home/lily/.local/lib/python3.10/site-packages
/usr/local/lib/python3.10/dist-packages
/usr/lib/python3/dist-packages

常见路径:
/usr/lib/python3.x:标准库位置。
/usr/local/lib/python3.x/dist-packages:通过 sudo pip install 安装的全局包。
~/.local/lib/python3.x/site-packages:通过 pip install --user 安装的用户级包。
5. 不同安装方式的典型路径对照表
| 安装方式 | 典型可执行文件路径 | 典型库文件路径 | 备注 |
|---|---|---|---|
| 系统自带 (APT) | /usr/bin/python3 | /usr/lib/python3.x/ | Ubuntu 默认预装,不建议随意修改 |
| 源码编译安装 | /usr/local/bin/python3 | /usr/local/lib/python3.x/ | 用户手动编译,优先级通常高于系统自带 |
| 虚拟环境 (venv) | ./venv/bin/python3 | ./venv/lib/python3.x/ | 项目隔离环境,激活后优先使用 |
| Anaconda/Miniconda | ~/anaconda3/bin/python3 | ~/anaconda3/lib/python3.x/ | 数据科学常用发行版 |
| pyenv 管理 | ~/.pyenv/versions/3.x.x/bin/python | ~/.pyenv/versions/3.x.x/lib/ | 多版本管理工具 |
总结建议
**日常检查:**直接使用 which python3 即可满足大部分需求。
**开发调试:**如果在虚拟环境中工作,务必使用 python3 -c "import sys; print(sys.executable)" 来确认当前生效的解释器,避免混淆系统 Python 和项目 Python。
**排查问题:**如果遇到 ModuleNotFoundError,请检查 sys.path 输出,确认包是否安装在了当前解释器能搜索到的目录下。