當前位置: 首頁>>技術教程>>正文


ImportError:ubuntu 14.04中沒有名為_io的模塊

, , ,

問題描述

我剛剛安裝了ubuntu 14.04LTS,我正在嘗試使用pip,但我得到以下回溯:

(nlmanagement)psychok7@Ultrabook:~/code/work/nlmanagement$ pip freeze
Traceback (most recent call last):
  File "/home/psychok7/code/work/venv/nlmanagement/bin/pip", line 9, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 2279, in load_entry_point
    return ep.load()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 1989, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 10, in <module>
    from pip.backwardcompat import walk_packages, console_to_str
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py", line 77, in <module>
    from urllib2 import URLError, HTTPError
  File "/usr/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/usr/lib/python2.7/httplib.py", line 79, in <module>
    import mimetools
  File "/usr/lib/python2.7/mimetools.py", line 6, in <module>
    import tempfile
  File "/usr/lib/python2.7/tempfile.py", line 32, in <module>
    import io as _io
  File "/usr/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: No module named _io

有任何想法嗎??我試過sudo apt-get install python3-pipsudo apt-get install python-pip

最佳解決思路

由於Python係統庫中的差異,你的virtualenv變得腐敗。

最好的選擇是重新安裝你的virtualenv:

$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt

次佳解決思路

我有同樣的問題。這發生在Ubuntu – 14.04和Virtual環境的Python版本 – 2.7.3

花了一天時間進行調試,在這裏發布我的答案,希望它對未來的訪問者有所幫助。

我發現io.py正在調用_io模塊。我認為_io模塊是解釋器的內部模塊,因此,僅在環境中用新版本替換python二進製文件應該修複。

(就我而言,Cloudera Manager 5.x Agent在ubuntu 14.04上的virtualenv使用的是python解釋器2.7.3,用2.7.6替換它。

echo "Using " && python2.7 --version
mv myenv/bin/python myenv/bin/python.bak;
cp `which python2.7` myenv/bin/python

當創建一個新的virtualenv時,它使用來自係統的更新的python二進製文件。因此,這解釋了線程中接受的答案。

第三種解決思路

您無需刪除虛擬環境。

隻需按照以下步驟操作

  1. 假設您的虛擬環境名稱為”mydev”,並且您使用的是virtualenvwrapper,請執行

    cd $WORKON_HOME
    virtualenv mydev
    

    上麵的命令隻是升級到python可執行文件的鏈接而不會丟失任何包。如果沒有virtualenvwrapper,可能沒有定義$WORKON_HOME;那麽你需要更改到virtualenv的父目錄。

  2. 在virtualenv之外,如果你的點不工作,那麽就是

    easy_install pip
    

    將解決問題。

第四種思路

在將我的ubuntu服務器升級到14.04之後,我在執行pip時也遇到了這種問題

ImportError: No module named _io

然後我發現隻需重新安裝virtualenv就可以解決這個問題!

sudo pip install virtualenv --upgrade

第五種思路

造成這種情況的一個原因是”pip”不好。請參閱:https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

和/或它可能是virtualenv的問題:https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466推薦的解決方法是:

  cd /usr/lib/python2.7
  ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/6977.html,未經允許,請勿轉載。