You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

pip目标目录信息来源是什么?如何永久修改pip安装路径?

如何永久修改pip的默认安装目录(无全局配置权限时)

首先咱们得先搞明白pip是从哪获取默认安装目录的,这样才能针对性解决问题:

pip的默认安装路径其实是跟着Python的site模块走的,而site模块依赖Python内置的sys.prefixsys.exec_prefix两个变量——这俩值是在Python安装时就写入到二进制文件(比如python.exe)里的,哪怕你把整个Python目录复制到新路径,这俩变量依然指向原来的安装目录(也就是你说的D:/python3.7.7)。pip默认就会把包安装到sys.prefix/Lib/site-packages目录下,这就是为什么你复制目录后,pip还是往旧路径装包的原因。

接下来给你几个可行的永久修改方案,都是不需要全局pip.ini权限的:

方案1:使用用户级pip配置文件

Windows下,每个用户都可以在自己的用户目录里创建个人pip配置,这个你肯定有权限操作:

  1. 打开文件资源管理器,导航到C:\Users\<你的用户名>(比如C:\Users\zhangsan
  2. 在这个目录下新建一个名为pip的文件夹
  3. 进入pip文件夹,新建一个名为pip.ini的文本文件,写入以下内容:
[global]
target = D:/binaries/python/Lib/site-packages

保存后,下次再用pip install时,就会默认把包安装到你指定的路径了。pip会优先读取用户级配置,只要你没在命令行用--target覆盖,这个配置就会生效。

方案2:设置系统环境变量

你可以给当前用户添加一个环境变量,让pip每次启动都自动读取这个目标路径:

  1. 按下Win + R,输入sysdm.cpl打开系统属性窗口
  2. 切换到「高级」标签页,点击「环境变量」
  3. 在「用户变量」区域(不要碰系统变量,你没权限),点击「新建」:
    • 变量名:PIP_TARGET
    • 变量值:D:/binaries/python/Lib/site-packages
  4. 点击确定保存所有设置,重启你的命令行终端(或者IDE),之后pip install就会默认装到指定目录了。

方案3:修改Python的site模块(进阶)

如果你想从Python层面修改默认的site-packages路径,可以修改site.py文件:

  1. 打开D:/binaries/python/Lib/site.py文件
  2. 找到getsitepackages()或者getusersitepackages()函数,修改它们的返回值,把你想要的路径加进去或者替换原来的路径。比如在getsitepackages里,把原来的路径替换成D:/binaries/python/Lib/site-packages
  3. 保存文件后,Python的site模块就会把这个路径当成默认的site-packages目录,pip也会跟着用这个路径。不过要注意,Python更新时这个文件可能会被覆盖,所以如果之后更新Python,需要重新修改。

不推荐的方案:修改pip源码

虽然可以直接修改pip的源码来硬编码默认目标路径(比如找到pip/commands/install.py里的target参数默认值),但这种方法太脆弱——每次pip更新,你的修改都会被覆盖,除非你每次更新后都重新改一遍,所以只作为最后的备选方案。

总结一下,最稳妥的是方案1或方案2,操作简单且不容易失效,完全不需要全局权限。

内容的提问来源于stack exchange,提问作者sn710

火山引擎 最新活动