[英]Python pip segfault when installing package
Python 2.7.6 (default, Oct 21 2014, 13:39:51)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
在我们运行 Centos 5.4 的旧旧服务器上一直遇到这个问题。
异常信息:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", line 1229, in prepare_files
req_to_install.run_egg_info()
File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", line 325, in run_egg_info
command_desc='python setup.py egg_info')
File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/util.py", line 697, in call_subprocess
% (command_desc, proc.returncode, cwd))
InstallationError: Command python setup.py egg_info failed with error code -11 in /tmp/pip_build_root/macs2
有任何想法吗? 最初我以为是 python 版本问题,但我从 2.7.1 升级到 2.7.6 仍然遇到同样的错误。
点子列表:
numpy (1.9.0)
pip (1.5.6)
setuptools (7.0)
wsgiref (0.1.2)
-Edit 当我卸载并使用 numpy 版本 1.4.0 时返回相同的错误但代码为 1。
(gdb) 运行 setup.py install --user 启动程序:/usr/local/bin/python2.7 setup.py install --user 警告:在 0x2aaaaaaab000 添加的符号文件系统提供的 DSO 中找不到可加载部分 >> >[启用使用 libthread_db 进行线程调试]
程序收到信号 SIGSEGV,分段错误。 append_metastr_to_string (meta=0x20, skip_brackets=0, ret=0x2aaaaf29e1e8) at >numpy/core/src/multiarray/datetime.c:1965 1965 if (meta->base == NPY_FR_GENERIC) {
这是由 wget 完成的,然后解压球
我在阅读帖子标题后遇到了这个问题,因为我自己也遇到了这个问题。 在这里为任何未来的读者展示我的案例和解决方案。
我的工作流程如下所示:
$ pip install simplejson
Collecting simplejson
Installing collected packages: simplejson
Successfully installed simplejson
Segmentation fault (core dumped)
因为我在这个系统上有 root 权限,所以我尝试做一个类似的流程,但作为另一个用户,它成功通过,没有任何问题。 我认为这与我的用户主管有关,因此我擦除了我的.local
文件夹
$ rm -rf ~/.local/lib/python*
上面相同的工作流程现在成功通过了,尽管有一个点子警告,正如大多数人所知,这并不重要。
$ pip install simplejson
Collecting simplejson
Installing collected packages: simplejson
Successfully installed simplejson
You are using pip version 8.1.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
当我尝试使用简单的用户权限来回退我的用户帐户时,我强制安装了pip
,它会用.local
文件夹中的一个覆盖/usr/bin/pip
中的系统 pip。 然后我从我的.local
文件夹中手动删除了 pip 的二进制文件,这个问题开始出现。 在我看来,我的用户帐户中仍然有一些对pip
包的引用。 当您同时使用多个 python 版本并像我一样手动删除任何二进制文件时,也可能发生这种情况。
添加--no-binary :all:
似乎对我有用。
所以你的新命令应该是这样的:
pip install <module> --no-binary :all:
我知道这有点晚了,但我希望这会有所帮助
当我尝试通过pip
或pip3安装 Python 包时,我也遇到了收到段错误消息的pip3
。 所以我对这个问题进行了一些研究和阅读。
经常有些文件好像坏了,可以通过删除缓存、重建一个venv或者重新安装相应的包来解决。
在一个地方,我发现了一条微不足道的评论,但它引导我解决了我的问题:
当您遇到分段错误时,这意味着计算机正在尝试访问内存中的受限区域。
我排除了pip
命令故意试图访问错误的内存区域的可能性,我很快得出硬件有缺陷的结论。 因此,我使用memtest86+从实时映像启动 PC,该映像也集成在 Linux 发行版的许多映像中。 在那里我可以在短时间内看到大量错误。
我的一个 RAM 模块有故障,所以这是硬件缺陷。
更换内存后,问题解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.