簡體   English   中英

安裝包時的Python pip segfault

[英]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:

我知道這有點晚了,但我希望這會有所幫助

當我嘗試通過pippip3安裝 Python 包時,我也遇到了收到段錯誤消息的pip3 所以我對這個問題進行了一些研究和閱讀。

網上常見的問題解決方案

經常有些文件好像壞了,可以通過刪除緩存、重建一個venv或者重新安裝相應的包來解決。

解決方案注意事項

在一個地方,我發現了一條微不足道的評論,但它引導我解決了我的問題:

當您遇到分段錯誤時,這意味着計算機正在嘗試訪問內存中的受限區域。

我排除了pip命令故意試圖訪問錯誤的內存區域的可能性,我很快得出硬件有缺陷的結論。 因此,我使用memtest86+從實時映像啟動 PC,該映像也集成在 Linux 發行版的許多映像中。 在那里我可以在短時間內看到大量錯誤。

我的解決方案

我的一個 RAM 模塊有故障,所以這是硬件缺陷。

更換內存后,問題解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM