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

Conda安装的Python交互模式触发Segmentation Fault问题求助

Python交互模式启动段错误(Segmentation Fault),脚本与IPython正常运行

环境说明

Python通过Conda安装:

(base) [kangl@login05]~% which python
~/miniconda3/bin/python

问题现象

直接启动Python交互模式触发Segmentation Fault:

(base) [kangl@login05]~% python
Python 3.10.10 | packaged by conda-forge | (main, Mar 24 2023, 20:08:06) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
zsh: segmentation fault  python

但Python脚本可正常执行:

(base) [kangl@login05]~% python -c "print('hello world')"
hello world

IPython也能正常启动:

(base) [kangl@login05]~% ipython
Python 3.10.10 | packaged by conda-forge | (main, Mar 24 2023, 20:08:06) [GCC 11.3.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

调试信息

GDB调试显示问题出在readline库初始化阶段:

(base) [kangl@login04]~% gdb python
GNU gdb (GDB) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-conda-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python...
(gdb) run
Starting program: /users/kangl/miniconda3/bin/python
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Python 3.10.10 | packaged by conda-forge | (main, Mar 24 2023, 20:08:06) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Program received signal SIGSEGV, Segmentation fault.
0x00002aaaab96b691 in __strlen_sse2_pminub () from /lib64/libc.so.6

回溯信息确认问题源于readline的locale初始化:

(gdb) backtrace
#0  0x00002aaaab96b691 in __strlen_sse2_pminub () from /lib64/libc.so.6
#1  0x00002aaaaac53f49 in _rl_init_locale ()
   from /users/kangl/miniconda3/lib/python3.10/lib-dynload/../../libreadline.so.8
#2  0x00002aaaaac54044 in _rl_init_eightbit ()
   from /users/kangl/miniconda3/lib/python3.10/lib-dynload/../../libreadline.so.8
#3  0x00002aaaaac32797 in rl_initialize ()
   from /users/kangl/miniconda3/lib/python3.10/lib-dynload/../../libreadline.so.8
#4  0x00002aaaaaad4a7d in setup_readline (mod_state=0x2aaab21b02a0)
    at /usr/local/src/conda/python-3.10.10/Modules/readline.c:1289
#5  PyInit_readline () at /usr/local/src/conda/python-3.10.10/Modules/readline.c:1502
#6  0x000055555576939a in _PyImport_LoadDynamicModuleWithSpec (fp=0x0,
    spec=<ModuleSpec(name='readline', loader=<ExtensionFileLoader(name='readline', path='/users/kangl/miniconda3/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so') at remote 0x2aaab21b09a0>, origin='/users/kangl/miniconda3/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so', loader_state=None, submodule_search_locations=None, _set_fileattr=True, _cached=None) at remote 0x2aaab21b02e0>)
    at /usr/local/src/conda/python-3.10.10/Python/importdl.c:167
#7  _imp_create_dynamic_impl (module=<optimized out>, file=<optimized out>,
    spec=<ModuleSpec(name='readline', loader=<ExtensionFileLoader(name='readline', path='/users/kangl/miniconda3/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so') at remote 0x2aaab21b09a0>, origin='/users/kangl/miniconda3/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so', loader_state=None, submodule_search_locations=None, _set_fileattr=True, _cached=None) at remote 0x2aaab21b02e0>)
    at /usr/local/src/conda/python-3.10.10/Python/import.c:2050
#8  _imp_create_dynamic (module=<optimized out>, args=args@entry=0x2aaab212e998, nargs=<optimized out>)
    at /usr/local/src/conda/python-3.10.10/Python/clinic/import.c.h:330
#9  0x0000555555694d14 in cfunction_vectorcall_FASTCALL (
    func=<built-in method create_dynamic of module object at remote 0x2aaaaab8e610>, args=0x2aaab212e998,
    nargsf=<optimized out>, kwnames=<optimized out>) at /usr/local/src/conda/python-3.10.10/Objects/methodobject.c:430
#10 0x000055555568a39b in do_call_core (kwdict={},
--Type <RET> for more, q to quit, c to continue without paging--

已尝试方案

执行mamba install -c conda-forge readline --force-reinstall重装readline库,问题未解决。


修复方案

1. 临时规避:禁用readline加载

启动Python时通过环境变量或参数跳过readline初始化:

  • 方法一:设置环境变量
export PYTHONSTARTUP=""
python

或单次启动:

PYTHONSTARTUP="" python
  • 方法二:使用-s参数(禁用用户自定义site模块和启动脚本)
python -s

2. 修复locale配置问题

段错误出现在_rl_init_locale,大概率是系统locale与conda环境的locale不兼容:

  • 查看当前locale设置:
locale
  • 临时设置兼容的locale(如C.UTF-8)后启动Python:
LC_ALL=C.UTF-8 python
  • 若有效,将配置写入shell配置文件(如~/.zshrc或~/.bashrc):
echo "export LC_ALL=C.UTF-8" >> ~/.zshrc
source ~/.zshrc

3. 重建conda环境

若上述方法无效,创建新的conda环境隔离问题:

conda create -n py310_fix python=3.10.10 -c conda-forge
conda activate py310_fix
python

4. 更换readline版本

尝试安装不同版本的readline,比如指定8.2版本:

mamba install -c conda-forge readline=8.2 --force-reinstall

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:02:33