【问题标题】:Python pip segfault when installing package安装包时的Python pip segfault
【发布时间】:2014-12-17 03:04:20
【问题描述】:
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)

-编辑 当我卸载并使用 numpy ver 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 follow 解压球完成的

【问题讨论】:

  • 我在任何地方都看不到段错误。有没有更完整的日志显示?
  • 另外,你运行了什么命令来得到这个异常?
  • 我正在读取错误代码 -11 = segfault 信号。此外,每当我导入 numpy 时,我都会遇到段错误,或者如果我手动安装包。现在尝试运行 gdb,一旦完成就会发布
  • 请在问题中编辑信息,不要在 cmets 中发布。除了 cmets 具有不可读的格式外,任何搜索要回答的问题或与他们自己的问题类似的问题等的人都不会看到该信息。
  • 同时,run setup.py install --user 仍然不足以知道您在做什么。那是在 numpy 源代码的下载和解压缩副本中运行的吗? 1.9.0?请查看您问题中的信息,并尝试想象任何人都可以使用您迄今为止发布的内容对其进行调试。

标签: python python-2.7 pip


【解决方案1】:

我在阅读帖子标题后遇到了这个问题,因为我自己也遇到了这个问题。在这里向任何未来的读者展示我的案例和解决方案。

问题

我的工作流程如下所示:

$ pip install simplejson
Collecting simplejson
Installing collected packages: simplejson
Successfully installed simplejson
Segmentation fault (core dumped)

解决方案

因为我在这个系统上有 root 权限,所以我尝试做一个类似的流程,但是作为另一个用户,它成功通过了,没有任何问题。我认为这与我的用户主管有关,因此我擦除了我的 .local 文件夹

$ rm -rf ~/.local/lib/python*

上述相同的工作流程现在成功通过,尽管有一个 pip 警告,正如大多数人所知,这并不重要。

$ 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 的系统点子。然后我从我的.local 文件夹中手动删除了 pip 的二进制文件,这个问题开始出现。在我看来,我的用户帐户中仍然有一些对 pip 包的引用。当您同时使用多个 python 版本并像我一样手动删除任何二进制文件时,也可能发生这种情况。

【讨论】:

  • 虽然这确实修复了分段错误,但删除.local 可能会产生负面影响,因为此目录可能包含用户安装的程序和设置。就我而言,这不是问题,但您可能需要确保在删除它之前没有任何您需要的东西。删除.local 中的 Python 目录可能是一个更好的主意。在我的机器上,我有一个名为.local\lib\python3.5 的目录,它又包含一个site-packages 目录。之后您可能需要重新安装所有模块。
  • 对不起,它对我不起作用,在我安装 winrm 时遇到同样的问题 :( 我做了一个正确的部署,一个测试虚拟机,第二个,对于 prod,失败了。唯一不同的事情我做错了一个是明确安装python3-pippython3,然后pip install --upgrade pip...但它失败了。所以,由于我还没有在失败的VM中进行任何其他更新,我重新部署了这些VM ,并正确安装,只需使用 sudo apt update; sudo apt upgrade -y; sudo apt install -y software-properties-common python-pip; pip install pywinrm ... 一切正常。
  • 我刚刚遇到了类似的问题 (pip install ansible-vault --> segmentation fault (core dumped)),这很有帮助,非常感谢
  • 这对我也有帮助,但我没有删除目录,而是重命名了它。我建议使用此冗余选项,而不是仅仅使用 rm -rf
  • 仅删除 site-packages 文件夹 (~/.local/lib/python3.6/site-packages) 也可以。无需删除整个 .local 文件夹。
【解决方案2】:

添加--no-binary :all: 似乎对我有用。

所以你的新命令应该是这样的:

pip install <module> --no-binary :all:

我知道这有点晚了,但我希望这会有所帮助

【讨论】:

  • 我认为这是一个非常有帮助的答案。通过将--no-binary :all: 添加到我的pip install &lt;module&gt;,一开始我得到了fatal error: ffi.h: No such file or directory。在运行sudo apt install libffi-dev 然后重新尝试安装后,我得到了fatal error: openssl/opensslv.h: No such file or directory。所以我运行了sudo apt install libssl-dev,然后再次尝试安装:pip3 install python-openstackclient --no-binary :all:。这次它安装没有错误。优秀! :-)
  • 为了澄清我之前的评论,--no-binary :all: 后缀帮助我找到了 python 包所依赖的 两个 apt 包。确实很有帮助。 ?
猜你喜欢
  • 2020-08-19
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
相关资源
最近更新 更多