You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Jenkins节点嵌入式Python3.8.9 pip安装报错求助

问题描述

Windows Jenkins工作节点部署了嵌入式Python 3.8.9,已用get-pip.py安装pip,并修改了python38._pth文件:

python38.zip
.
Lib
Lib/site-packages
# Uncomment to run site.main() automatically
#import site

流水线代码如下:

dir('env'){
    bat '''
        .\python.exe -m pip config --user set global.extra-index-url "<url>"
        .\python.exe -m pip install -r requirements.txt --force-reinstall
        .\python.exe -m pip list
    '''
}

运行时出现错误:

ERROR: Exception:
Traceback (most recent call last):
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\cli\base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\cli\req_command.py", line 248, in wrapper
    return func(self, options, args)
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\commands\install.py", line 452, in run
    installed = install_given_reqs(
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\req\__init__.py", line 72, in install_given_reqs
    requirement.install(
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\req\req_install.py", line 780, in install
    scheme = get_scheme(
  File "D:\jenkins\workspace\<repo-name_><branch-name>\env\Lib/site-packages\pip\_internal\locations\__init__.py", line 249, in get_scheme
    old = _distutils.get_scheme(
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\locations\_distutils.py", line 141, in get_scheme
    scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix)
  File "D:\jenkins\workspace\<repo-name>_<branch-name>\env\Lib/site-packages\pip\_internal\locations\_distutils.py", line 80, in distutils_scheme
    i.finalize_options()
  File "distutils\command\install.py", line 344, in finalize_options
  File "distutils\command\install.py", line 487, in convert_paths
  File "distutils\util.py", line 122, in convert_path
ValueError: path '/scratch/data/jenkins/workspace/<repo-name>_<branch-name>_tmp/.local' cannot be absolute

使用嵌入式Python 3.10运行相同流水线无问题。

解决办法
  • 启用site模块
    修改python38._pth文件,取消import site的注释:

    python38.zip
    .
    Lib
    Lib/site-packages
    # Uncomment to run site.main() automatically
    import site
    

    嵌入式Python默认不启用site模块,导致无法正确识别Windows系统的用户目录规则,启用后能让pip生成符合Windows格式的路径,避免出现Unix风格的绝对路径错误。

  • 移除pip config的--user参数
    流水线中pip config --user会尝试配置用户级pip设置,而嵌入式Python 3.8在Windows下处理用户目录时存在路径解析问题,直接改用全局配置(去掉--user),或者在install命令中直接指定extra-index-url:

    dir('env'){
        bat '''
            .\python.exe -m pip install -r requirements.txt --force-reinstall --extra-index-url "<url>"
            .\python.exe -m pip list
        '''
    }
    
  • 指定pip安装目标路径
    在pip install时通过--target参数明确指定依赖安装到当前环境的site-packages目录,避免pip自动查找用户目录:

    dir('env'){
        bat '''
            .\python.exe -m pip install -r requirements.txt --force-reinstall --extra-index-url "<url>" --target ./Lib/site-packages
            .\python.exe -m pip list
        '''
    }
    
  • 检查Jenkins节点的HOME环境变量
    确保Jenkins运行用户的HOME环境变量是Windows格式的绝对路径(比如C:\Users\JenkinsUser),如果HOME被设置为Unix风格路径,Python 3.8的pip会错误生成类Unix路径导致报错。在Jenkins节点的系统配置中检查或手动设置HOME环境变量。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:05:00