Fedora 上的 Python 环境:venv、pipx、uv 与国内源
python3 -Vrpm -q python3Python 3.15.0rc1python3-3.15.0~rc1-1.fc45.x86_64Fedora 的 Python 装在 /usr,sys.prefix 就是 /usr——这是系统组件,dnf 自己就依赖它。
先记住一条铁律
Section titled “先记住一条铁律”不要 sudo pip install。 理由不是洁癖:
- 会往
/usr/lib/python3.15/site-packages写文件,与 rpm 管理的文件混在一起 dnf upgrade时可能被覆盖,也可能因为冲突导致升级失败- 破坏的是系统工具链本身(dnf5 就是 Python 写的)
需要装包,永远用下面三种隔离之一。
第一层:venv(项目依赖隔离)
Section titled “第一层:venv(项目依赖隔离)”mkdir -p ~/proj && cd ~/projpython3 -m venv .venvsource .venv/bin/activatepip install requestswhich python/home/labuser/proj/.venv/bin/python退出:deactivate。
venv 只隔离包,解释器还是系统的 3.15。绝大多数项目到这一步就够。
pip 换国内源
Section titled “pip 换国内源”配置文件按优先级:项目级 pip.conf < 用户级 ~/.config/pip/pip.conf < 全局 /etc/pip.conf。
mkdir -p ~/.config/pipcat > ~/.config/pip/pip.conf <<'EOF'[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simpleEOF验证:
pip config listglobal.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'临时用一次不写配置,加 -i:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests镜像是否更快取决于你的线路,实测方法见国内加速源。
第二层:pipx(装命令行工具)
Section titled “第二层:pipx(装命令行工具)”有些包是应用不是库(比如 black、httpie、ansible),它们需要独立的虚拟环境,否则会和其他项目的依赖打架。用 pipx:
sudo dnf install pipxpipx ensurepathpipx install blackblack --versionpipx list 能看到每个工具的独立环境:
pipx list升级也统一:pipx upgrade-all。
第三层:uv(要换解释器版本时)
Section titled “第三层:uv(要换解释器版本时)”Fedora 仓库默认只给一个 Python(python3 = 3.15.0rc1),但它确实提供了版本化并存包。实测:
sudo dnf install python3.13 python3.14python3.13 --version # Python 3.13.15python3.14 --version # Python 3.14.7python3 --version # Python 3.15.0rc1三个解释器并存在 /usr/bin/ 下,互不干扰。细节见多版本并存。
要更早的版本(3.12 及以前),或者需要更多控制:
curl -LsSf https://astral.sh/uv/install.sh | shuv python install 3.12uv python listuv venv --python 3.12uv 自己管理解释器下载与缓存,不碰系统 Python。
也可以用 pyenv:
curl https://pyenv.run | bashpyenv install 3.12.7pyenv global 3.12.7三种方式怎么选
Section titled “三种方式怎么选”| 需求 | 用什么 |
|---|---|
| 项目装依赖 | venv |
| 装命令行工具(black/httpie/ansible) | pipx |
| 要另一个解释器版本 | uv 或 pyenv |
| 要完全隔离的系统环境 | 容器(见容器) |
| CI 里固定版本 | 容器镜像 |
| 现象 | 原因 |
|---|---|
pip: command not found | 新装系统没装 pip,用 python3 -m pip 或 dnf install python3-pip |
error: externally-managed-environment | Fedora 阻止直接写系统 site-packages,正是要你用 venv |
ModuleNotFoundError 明明装过 | 装在了另一个解释器/另一个 venv 里,用 which python 确认 |
| venv 里命令找不到 | 忘了 source .venv/bin/activate |
| 系统工具报 Python 错误 | 之前 sudo pip 污染了系统包,用 rpm -V python3-libs 核对 |
- 多版本并存 — Python 3.13/3.14 并存包与各软件的版本策略
- 国内加速源 — pip 镜像与实测对比
- 容器与 rootless — 彻底隔离的运行环境
- 工具链与多版本共存 — 总体策略
- 官方:Python