统一修改方式
添加环境变量: PYTHONUSERBASE=“新的地址”
参考资料
site.py代码
# USER_SITE 地址可以看到默认由userbase而得到
def getusersitepackages():
"""Returns the user-specific site-packages directory path.
If the global variable ``USER_SITE`` is not initialized yet, this
function will also set it.
"""
global USER_SITE, ENABLE_USER_SITE
userbase = getuserbase() # this will also set USER_BASE
if USER_SITE is None:
if userbase is None:
ENABLE_USER_SITE = False # disable user site and return None
else:
USER_SITE = _get_path(userbase)
return USER_SITE
# USER_BASE 可以看到默认由 _getuserbase() 获得
def getuserbase():
"""Returns the `user base` directory path.
The `user base` directory can be used to store data. If the global
variable ``USER_BASE`` is not initialized yet, this function will also set
it.
"""
global USER_BASE
if USER_BASE is None:
USER_BASE = _getuserbase()
return USER_BASE
# _getuserbase() 则默认读取环境变量:PYTHONUSERBASE
def _getuserbase():
env_base = os.environ.get("PYTHONUSERBASE", None)
if env_base:
return env_base
# Emscripten, VxWorks, and WASI have no home directories
if sys.platform in {"emscripten", "vxworks", "wasi"}:
return None
def joinuser(*args):
return os.path.expanduser(os.path.join(*args))
if os.name == "nt":
base = os.environ.get("APPDATA") or "~"
return joinuser(base, "Python")
if sys.platform == "darwin" and sys._framework:
return joinuser("~", "Library", sys._framework,
"%d.%d" % sys.version_info[:2])
return joinuser("~", ".local")
python3.12 版本以上python -m site -help 提示 frozen [–user-base] [–user-site]
问题描述
- 升级到最新版python3.11.5尝试修改pip的本地安装包地址, python -m site -help查找site.py文件地址时提示 frozen 被冻结。
- 尝试直接修改
D:\Program Files\Python\Python311\Lib\site.py文件内容USER_BASE= "D:\Program Files\Python"。 - 保存后输入
python -m site发现USER_BASE内容无变化。
处理方法(已废弃,统一添加环境变量PYTHONUSERBASE修改包地址,避免修改源码)
降级到python3.10尝试python -m site -help,此时正确显示site.py文件路径,修改USER_BASE= "D:\Program Files\Python"后成功生效。
测试pip instarll selenium,此时安装包成功下载到D:\Program Files\Python\Python310\Lib\site-packages