web-dev-qa-db-ja.com

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-pipおよびSudo apt-get install python-pip

50
psychok7

Pythonシステムライブラリの差分により、virtualenvが破損しました。

最良の選択は、virtualenvを再インストールすることです。

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

同じ問題がありました。これは、Ubuntu-14.04および仮想環境のPython version-2.7.3

デバッグに1日を費やした後、ここに私の回答を投稿し、将来の訪問者の役に立つことを願っています。

io.py_ioモジュールを呼び出していることがわかりました。 _ioモジュールはインタープリターの内部にあると思うので、環境内のpythonバイナリを新しいバージョンに置き換えるだけで修正されるはずです。

(私の場合、ubuntu 14.04上のCloudera Manager 5.x Agentの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バイナリが使用されます。したがって、スレッドで受け入れられた答えが説明されます。

55
Thamme Gowda

仮想環境を削除する必要はありません。

次の手順に従ってください。

  1. 仮想環境名が「mydev」であり、virtualenvwrapperを使用しているとしましょう

    cd $WORKON_HOME
    virtualenv mydev
    

    上記のコマンドは、パッケージを失うことなく、python実行可能ファイルへのリンクをアップグレードするだけです。virtualenvwrapper$WORKON_HOMEが定義されていない可能性があります。その後、virtualenvの親ディレクトリに変更する必要があります。

  2. virtualenvの外で、pipが機能していない場合は、

    easy_install pip
    

    問題を解決します。

22
Gomes

私のubuntuサーバーを14.04にアップグレードした後、pipの実行中にこの種の問題もあります

ImportError: No module named _io

次に、virtualenvを再インストールするだけでこの問題を解決できることがわかりました。

Sudo pip install virtualenv --upgrade

3
kakashi

この原因の1つは、悪い「ピップ」です。参照: 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 .
2
Bryce

破損したvirtualenvのpythonバージョンを置き換える必要があります。

これを行う:

  1. 新しいVirtualenvを作成する

    mkvirtualenv MyNewTestEnv
    
  2. 「python」を探します(私の場合、virtualenvはホームディレクトリにあります)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. 「python」を新しいvirtualenvから破損したvirtualenvにコピーします

    cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    

それでおしまい。これで、CorruptedEnvを修正する必要があります。

0
dh1tw

この回避策はSuSE 12.2に適用されますダウンロード済みpythonそして./configureでインストールし、/ usr/localフォルダーにデフォルトでインストールします

インストールされたpipおよびvirtualenv

python virtual envを作成しようとするとき

*linux-t69c:/nkadic # virtualenv -p python venv2*
**ImportError: No module named _struct**
or (if manually setting PYTHONPATH)
**ImportError: No module named _io**

回避策は次のとおりです。

デフォルトのsys.pathを確認python(デフォルトのPYTHONPATHを変更しないでください)

libs dirがあるかどうかを確認します/usr/local/lib/python2.7/lib-dynloadが存在します

そうでない場合は、既存のlib64パスへのシンボリックリンクを作成します。

linux-t69c:/nkadic # ln -s /usr/local/lib64/python2.7/lib-dynload/  
/usr/local/lib/python2.7/lib-dynload
linux-t69c:/nkadic # ls -ltr /usr/local/lib/python2.7/lib-dynload
lrwxrwxrwx 1 root root 39 Aug 12 21:06 /usr/local/lib/python2.7/lib-dynload -> 
/usr/local/lib64/python2.7/lib-dynload/

この回避策の後、「virtualenv -p python venv2」が機能します

linux-t69c:/nkadic # virtualenv -p python venv2
Already using interpreter /usr/local/bin/python
PYTHONHOME is set.  You *must* activate the virtualenv before using it
New python executable in /nkadic/venv2/bin/python
Installing setuptools, pip, wheel...done.
linux-t69c:/nkadic # 
0
nkadic

異なるpythonバージョンをインストールしている場合。Pythonを参照する必要があります。

virtualenv -p /usr/bin/python2.7 myenv

または

virtualenv -p /usr/bin/python3.x myenv
0
mcolak