老蒋的知识库

  • 首页
  • 文章归档
  • 关于页面

  • 搜索

Python修改pip包的安装目录到D盘

发表于 2023-09-17 | 分类于 Python | 0 | 阅读次数 34

统一修改方式

添加环境变量: 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]

问题描述

  1. 升级到最新版python3.11.5尝试修改pip的本地安装包地址, python -m site -help查找site.py文件地址时提示 frozen 被冻结。
  2. 尝试直接修改D:\Program Files\Python\Python311\Lib\site.py文件内容USER_BASE= "D:\Program Files\Python"。
  3. 保存后输入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

  • 本文作者: jagger
  • 本文链接: /archives/python-bu-shu-de-keng
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
ETCD 中的坑
Docker 的坑
jagger

jagger

66 日志
31 分类
0 标签
Creative Commons
0%
© 2026 jagger
由 Halo 强力驱动