Python 的 pip 安装路径怎么改?

沈知远
沈知远
发布时间:2026-11-12| 8人浏览过
原创

详细讲解修改 Python pip 安装路径的四种实用方法:在指定位置创建虚拟环境、使用 --target 临时指定目录、配置 PYTHONUSERBASE 环境变量以及修改 site.py 配置文件,并说明 PYTHONPATH 识别与缓存目录清理。

假设你在一台 C 盘剩余空间只有几个 GB 的 Windows 电脑上准备安装 PyTorch 或大型数据分析库,又或者在没有管理员权限的 Linux 服务器上执行 pip install,默认情况下 pip 会将第三方库写入系统盘的 Python 目录或用户主目录,很快就会触发磁盘空间不足或权限拒绝报错。

要修改 pip 的安装路径,核心思路是同时控制“包写到哪里”和“Python 去哪里找包”。根据使用范围不同,有四种直接可行的方法:日常项目推荐直接在目标磁盘创建虚拟环境(venv);单次安装测试可使用 pip install --target;需要永久更改当前用户的默认安装位置时,可配置 PYTHONUSERBASE 环境变量或修改 Python 标准库中的 site.py。下面按先确认现状、再分场景修改、最后验证生效的顺序逐步说明。

一、修改前先查看当前的 pip 安装路径与搜索列表

在动手修改前,需要先分清两类目录:一类是第三方库实际解压存放的 site-packages 目录,另一类是 pip 下载 .whl 安装包时暂存的缓存目录(pip cache)。很多人以为只改安装目录就能释放 C 盘空间,实际上下载缓存同样会占用数 GB 空间。

打开终端(Windows 使用命令提示符 CMD 或 PowerShell,Linux/macOS 使用 Terminal),执行以下命令查看当前 Python 的模块搜索路径和用户安装路径:

执行环境:Windows CMD / PowerShell 或 Linux / macOS 终端
python -m site
示例输出(以 Windows 环境为例)
sys.path = [
    'C:\\Users\\demo',
    'C:\\Program Files\\Python311\\python311.zip',
    'C:\\Program Files\\Python311\\DLLs',
    'C:\\Program Files\\Python311\\Lib',
    'C:\\Program Files\\Python311',
    'C:\\Users\\demo\\AppData\\Roaming\\Python\\Python311\\site-packages',
    'C:\\Program Files\\Python311\\Lib\\site-packages',
]
USER_BASE: 'C:\\Users\\demo\\AppData\\Roaming\\Python' (exists)
USER_SITE: 'C:\\Users\\demo\\AppData\\Roaming\\Python\\Python311\\site-packages' (exists)
ENABLE_USER_SITE: True

输出信息中包含三个关键部分:

  • 全局安装路径:列表末尾的 C:\Program Files\Python311\Lib\site-packages,直接运行 pip install 包名 时默认写入此处。
  • 用户级基准目录(USER_BASE)与包目录(USER_SITE):运行 pip install --user 包名 或遇到全局权限不足时,pip 会把库安装到 USER_SITE,并把可执行脚本放到 USER_BASE\Python311\Scripts。
  • 模块搜索列表(sys.path):你在代码中写 import requests 时,Python 只会按顺序扫描 sys.path 里的目录。如果把包安装到了不在该列表中的新文件夹,不额外配置就会报 ModuleNotFoundError。
Python 的 pip 安装路径怎么改?
图 1:pip 安装时涉及的四种目录职责,以及 Python 导入模块时对不同目录的识别方式

二、方法一:在目标磁盘创建虚拟环境(推荐,无需额外配路径)

如果你的目的是把某个项目或日常使用的第三方库放到 D 盘(或 Linux 的挂载数据盘 /data),最稳妥的做法是直接在目标磁盘创建 Python 虚拟环境。虚拟环境自带独立的 pip 和 site-packages,激活后执行 pip install 会自动装入该虚拟环境所在磁盘,并且 Python 解释器天然能够识别,不会污染系统环境。

1. 在指定磁盘创建并激活虚拟环境

以 Windows 将环境建在 D:\py_envs\work_env(Linux/macOS 可替换为 /data/py_envs/work_env)为例,在终端依次执行:

执行环境:Windows PowerShell / CMD
# 1. 在 D 盘指定路径创建虚拟环境
python -m venv D:\py_envs\work_env

# 2. 激活虚拟环境(CMD 执行下面第一行;PowerShell 执行第二行)
D:\py_envs\work_env\Scripts\activate.bat
# D:\py_envs\work_env\Scripts\Activate.ps1

# 3. 正常安装第三方包(会自动写入 D:\py_envs\work_env\Lib\site-packages)
pip install requests

如果是 Linux 或 macOS 系统,激活命令改为:

执行环境:Linux / macOS 终端
python3 -m venv /data/py_envs/work_env
source /data/py_envs/work_env/bin/activate
pip install requests

2. 验证安装位置

激活状态下运行 pip show requests,可以看到 Location 已经指向 D 盘目录:

示例输出
Name: requests
Version: 2.32.3
Summary: Python HTTP for Humans.
Location: D:\py_envs\work_env\Lib\site-packages

三、方法二:使用 --target 参数单次安装到指定文件夹

如果不想创建完整的虚拟环境,只是临时把某几个包安装到指定的文件夹(例如制作离线依赖包、打包 AWS Lambda 层,或临时借用其他磁盘空间),可以在 pip install 时加上 --target(简写为 -t)参数。

1. 指定目标路径安装

假设统一将包安装到 D:\python_pkgs,执行以下命令:

执行环境:Windows CMD / PowerShell
pip install --target=D:\python_pkgs requests
示例输出
Collecting requests
  Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
...
Successfully installed certifi-2024.8.30 charset-normalizer-3.4.0 idna-3.10 requests-2.32.3 urllib3-2.2.3

2. 将自定义文件夹加入 Python 搜索路径

容易出错的地方:直接 import 会找不到模块 --target 只负责把文件解压到 D:\python_pkgs,但 Python 默认的 sys.path 里并没有这个目录。如果不把该目录告知 Python,运行代码时依然会报 ModuleNotFoundError: No module named 'requests'。

你有两种方式让 Python 识别 D:\python_pkgs:

  • 方式 A(通过环境变量全局或会话生效):将 D:\python_pkgs 添加到环境变量 PYTHONPATH 中。
  • 方式 B(在 Python 脚本开头动态添加):适合只在特定脚本中引用该目录。
执行环境:Windows PowerShell(设置当前会话 PYTHONPATH 并验证导入)
$env:PYTHONPATH = "D:\python_pkgs"
python -c "import requests; print(requests.__file__)"
示例输出
D:\python_pkgs\requests\__init__.py
Python 的 pip 安装路径怎么改?
图 2:创建虚拟环境(路径 A)与使用 --target 参数(路径 B)的操作步骤差异

四、方法三:通过 PYTHONUSERBASE 环境变量修改默认用户路径

如果你平时习惯不建虚拟环境、直接用系统 Python,或者在共享服务器上只能使用 pip install --user,可以通过设置系统环境变量 PYTHONUSERBASE,把原本位于 C 盘用户目录(或 Linux 的 ~/.local)的 USER_BASE 整体迁移到新位置。

这种方式比 --target 省心:只要设置了 PYTHONUSERBASE,Python 启动时会自动把其下的 site-packages 加入 sys.path,不需要再单独维护 PYTHONPATH。

1. 配置环境变量并开启默认 --user 安装

假设希望把用户级基准目录改到 D:\python_userbase(Linux/macOS 可设为 /data/python_userbase):

  • Windows 永久设置:打开“系统属性 → 高级 → 环境变量”,在“用户变量”中点击“新建”,变量名填 PYTHONUSERBASE,变量值填 D:\python_userbase。若想在当前 PowerShell 窗口立即生效,可同时执行:
执行环境:Windows PowerShell
# 当前终端立即生效,并写入用户级环境变量
$env:PYTHONUSERBASE = "D:\python_userbase"
[Environment]::SetEnvironmentVariable("PYTHONUSERBASE", "D:\python_userbase", "User")

# 让 pip 默认采用 --user 模式安装(无需每次手敲 --user)
pip config set global.user true
  • Linux / macOS 永久设置:将环境变量写入 ~/.bashrc 或 ~/.zshrc:
执行环境:Linux / macOS 终端
echo 'export PYTHONUSERBASE="/data/python_userbase"' >> ~/.bashrc
source ~/.bashrc
pip config set global.user true

2. 验证 USER_SITE 是否已切换

再次运行 python -m site 检查路径变化:

示例输出(Windows 环境)
USER_BASE: 'D:\\python_userbase' (doesn't exist)
USER_SITE: 'D:\\python_userbase\\Python311\\site-packages' (doesn't exist)
ENABLE_USER_SITE: True

此时状态显示 doesn't exist 是正常的,当你第一次执行 pip install requests 时,pip 会自动创建 D:\python_userbase\Python311\site-packages 并将包写入其中。

补充设置:让命令行工具(如 pytest、black)也能直接运行 修改 PYTHONUSERBASE 后,第三方包附带的可执行程序会安装在 D:\python_userbase\Python311\Scripts(Linux/macOS 为 /data/python_userbase/bin)。建议将该 Scripts 或 bin 目录一并加入系统的 PATH 环境变量,避免安装后提示找不到命令。

五、方法四:修改 Python 标准库的 site.py 文件

如果不方便添加系统环境变量,也可以直接修改当前 Python 安装目录下的 site.py 文件,硬编码指定 USER_BASE 和 USER_SITE。需要注意,这种方法只对当前这一个 Python 解释器生效,且重装或升级 Python 小版本时可能会被覆盖。

1. 找到 site.py 文件的位置

在终端运行以下命令定位当前 Python 的 site.py 路径:

执行环境:Windows / Linux / macOS 终端
python -c "import site; print(site.__file__)"
示例输出
C:\Program Files\Python311\Lib\site.py

2. 修改 USER_SITE 和 USER_BASE

用文本编辑器打开该 site.py 文件,搜索 USER_SITE = None 和 USER_BASE = None(通常在文件前 100 行内),将其改为目标磁盘路径。在 Windows 下路径字符串建议使用原始字符串 r"..." 或双反斜杠:

修改文件:C:\Program Files\Python311\Lib\site.py
# 原内容:
# USER_SITE = None
# USER_BASE = None

# 修改为(路径中的 Python311 请与你的实际版本一致):
USER_BASE = r"D:\python_userbase"
USER_SITE = r"D:\python_userbase\Python311\site-packages"

保存文件后,同样执行 pip config set global.user true,之后每次运行 pip install 都会默认安装到 D:\python_userbase\Python311\site-packages。

Python 的 pip 安装路径怎么改?
图 3:配置 PYTHONUSERBASE 或 site.py 后的目录层级与环境变量配合关系

六、一并修改 pip 下载缓存路径(彻底释放系统盘空间)

如果你修改 pip 安装路径是因为 C 盘或系统盘空间不足,除了改包安装目录外,还需要把 pip 的下载缓存目录迁移走。否则每次安装几百 MB 的库时,pip 仍会先把安装包缓存在 C:\Users\用户名\AppData\Local\pip\Cache(Linux 为 ~/.cache/pip)。

在终端依次执行以下三条命令,即可查看旧缓存位置、清理已有缓存,并将新缓存目录永久改到 D:\pip_cache:

执行环境:Windows CMD / PowerShell(Linux 可将路径换为 /data/pip_cache)
# 1. 查看当前缓存目录与占用大小
pip cache info

# 2. 清空旧缓存释放系统盘空间
pip cache purge

# 3. 永久修改 pip 缓存目录到 D 盘
pip config set global.cache-dir "D:\pip_cache"
示例输出(执行 pip config set 后)
Writing to C:\Users\demo\AppData\Roaming\pip\pip.ini

七、四种修改方案对比与常见问题

不确定自己的场景该选哪一种方法时,可以对照下表及总结图快速决定:

修改方法 核心命令 / 配置项 是否需配 PYTHONPATH 适用场景
方法一:虚拟环境 venv python -m venv D:\py_envs\work_env 否(激活即用) 多项目开发、迁移大体积 AI/科学计算环境,隔离性最好
方法二:--target 参数 pip install --target=D:\python_pkgs 包名 是(必须手动添加) 单次临时安装、离线依赖收集或无虚拟环境权限的特定目录打包
方法三:PYTHONUSERBASE 设置环境变量 PYTHONUSERBASE=D:\python_userbase 否(sys.path 自动识别) 不习惯每次激活虚拟环境,希望永久改变当前用户默认安装盘符
方法四:修改 site.py 修改标准库 site.py 中的 USER_BASE 与 USER_SITE 否(sys.path 自动识别) 不便修改系统环境变量,仅针对单个指定 Python 版本固定用户目录
Python 的 pip 安装路径怎么改?
图 4:四种 pip 安装路径修改方法对比与系统盘清理配套操作总结

常见问题排查

1. 用 --target 安装的包,怎么使用 pip uninstall 卸载?

pip uninstall 命令本身不支持 --target 参数。如果包是通过 pip install --target=D:\python_pkgs 安装的,卸载时直接进入 D:\python_pkgs 文件夹,手动删除对应的包目录及其 .dist-info 文件夹即可;如果需要频繁使用 pip list、pip uninstall 管理依赖,应改用虚拟环境或 PYTHONUSERBASE 方案。

2. 已经修改了 site.py,为什么运行 python -m site 还是显示旧路径?

先检查系统中是否同时设置了 PYTHONUSERBASE 环境变量,因为当 site.py 中的 USER_BASE 保持为 None 时才会读取环境变量,而如果机器上装了多个 Python 版本(例如同时装了 Python 3.10、Python 3.11 或 Anaconda),你修改的 site.py 可能不属于当前终端调用的 python。先执行 python -c "import site; print(site.__file__)",确认打开编辑的就是该输出指向的文件。

3. 在 PyCharm 或 VS Code 里运行代码时,依然提示找不到刚改路径安装的包?

IDE 通常为项目单独指定了 Python 解释器。打开 IDE 的解释器设置,核对当前项目选中的 python.exe 路径是否与你在终端执行 pip install 时的 Python 一致;如果使用了环境变量 PYTHONUSERBASE 或 PYTHONPATH,修改系统环境变量后需要完全关闭并重启 IDE,新环境变量才会被 IDE 进程读取。

相关专题:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。