pip目标目录信息来源是什么?如何永久修改pip安装路径?
首先咱们得先搞明白pip是从哪获取默认安装目录的,这样才能针对性解决问题:
pip的默认安装路径其实是跟着Python的site模块走的,而site模块依赖Python内置的sys.prefix和sys.exec_prefix两个变量——这俩值是在Python安装时就写入到二进制文件(比如python.exe)里的,哪怕你把整个Python目录复制到新路径,这俩变量依然指向原来的安装目录(也就是你说的D:/python3.7.7)。pip默认就会把包安装到sys.prefix/Lib/site-packages目录下,这就是为什么你复制目录后,pip还是往旧路径装包的原因。
接下来给你几个可行的永久修改方案,都是不需要全局pip.ini权限的:
方案1:使用用户级pip配置文件
Windows下,每个用户都可以在自己的用户目录里创建个人pip配置,这个你肯定有权限操作:
- 打开文件资源管理器,导航到
C:\Users\<你的用户名>(比如C:\Users\zhangsan) - 在这个目录下新建一个名为
pip的文件夹 - 进入
pip文件夹,新建一个名为pip.ini的文本文件,写入以下内容:
[global] target = D:/binaries/python/Lib/site-packages
保存后,下次再用pip install时,就会默认把包安装到你指定的路径了。pip会优先读取用户级配置,只要你没在命令行用--target覆盖,这个配置就会生效。
方案2:设置系统环境变量
你可以给当前用户添加一个环境变量,让pip每次启动都自动读取这个目标路径:
- 按下
Win + R,输入sysdm.cpl打开系统属性窗口 - 切换到「高级」标签页,点击「环境变量」
- 在「用户变量」区域(不要碰系统变量,你没权限),点击「新建」:
- 变量名:
PIP_TARGET - 变量值:
D:/binaries/python/Lib/site-packages
- 变量名:
- 点击确定保存所有设置,重启你的命令行终端(或者IDE),之后
pip install就会默认装到指定目录了。
方案3:修改Python的site模块(进阶)
如果你想从Python层面修改默认的site-packages路径,可以修改site.py文件:
- 打开
D:/binaries/python/Lib/site.py文件 - 找到
getsitepackages()或者getusersitepackages()函数,修改它们的返回值,把你想要的路径加进去或者替换原来的路径。比如在getsitepackages里,把原来的路径替换成D:/binaries/python/Lib/site-packages。 - 保存文件后,Python的
site模块就会把这个路径当成默认的site-packages目录,pip也会跟着用这个路径。不过要注意,Python更新时这个文件可能会被覆盖,所以如果之后更新Python,需要重新修改。
不推荐的方案:修改pip源码
虽然可以直接修改pip的源码来硬编码默认目标路径(比如找到pip/commands/install.py里的target参数默认值),但这种方法太脆弱——每次pip更新,你的修改都会被覆盖,除非你每次更新后都重新改一遍,所以只作为最后的备选方案。
总结一下,最稳妥的是方案1或方案2,操作简单且不容易失效,完全不需要全局权限。
内容的提问来源于stack exchange,提问作者sn710




