weakrefインポートエラーによりpython2.7が壊れています。助けてください!


27

16.04から17.10に更新したばかりで、python2.7コマンドを実行しようとするたびに、次のエラーが表示されます。

pip install --upgrade pip
Traceback (most recent call last):
File "/home/XXXX/bin/pip", line 7, in <module>
    from pip import main
  File "/home/XXXX/local/lib/python2.7/site-packages/pip/__init__.py", 
line 5, in <module>
    import logging
  File "/usr/lib/python2.7/logging/__init__.py", line 26, in <module>
    import sys, os, time, cStringIO, traceback, warnings, weakref, 
collections
  File "/home/XXXX/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

別のユーザーにも同様の問題がありましたが、これは私が実行しようとするすべてのpythonプログラムに影響します。私はpipを介して何もインストールすることも、Pythonスクリプトを使用することもできません。私は何をすべきか本当に分かりません。支援が大歓迎です。

「python --version」の出力は

Python 2.7.12

ただし、「pythonの更新」は以下を生成します。

python is already the newest version (2.7.14-2ubuntu1).

私は17.04から17.10に更新し、同じに直面していImportError: cannot import name _remove_dead_weakrefます。私のPythonは2.7.14
Csaba Toth

私の場合、仮想環境を使用していますが、仮想環境内のpythonがシステムバージョンと同期していないため、このエラーが発生していると思われます。すべてのパッケージをインストールするのは大変でしたが、仮想環境を一から再構築することで問題が解決するのではないかと疑っています
-Csaba Toth

回答:


26

これはUbuntuのソリューションではありませんが、この質問はエラーの検索結果で高く表示されるため、デフォルトのシステムPythonは2.7であり、インストール中に「python @ 2」を作成したため、OSXでこのエラーが発生したと言いたいと思います別のパッケージをインストールします。

OSXでhomebrewを使用しているbrew list場合、を実行してbrewでインストールしたパッケージを確認し、そのリストに「python @ 2」が表示され、Python 2.7がシステムPythonである場合、brewでインストールしたパッケージを削除できますbrew remove python@2 --ignore-dependencies


2
これは、多くのパッケージをpackage @ versionの新しいパッケージに置き換えて、醸造アップグレードを行った後に発生しました。
ヒューゴH

2
これは私を助けました。swiftMacで実行すると、上記のエラーが発生しました。それはbrewのpython2を使用していたためでした。削除すると問題が解決しました。
-jmurphyau

2
これをありがとう。それは私のlldb警告を解決するのに役立ちました。
スティーブンヘプティング

ヘッドアップをありがとう。システムpythonではなく、最新のHomebrew pythonを指すように/ usr / local / bin / pythonのシンボリックリンクを更新しました
matt

9

仮想環境を使用していた場合は、再作成する必要があります。他の可能性は、システムベースと衝突するソースベースまたはサイドインストールされたPythonバージョンを使用することです。その場合、さまざまな環境から見て適切なフォルダーとパスが構成されていることを整理する必要があります。


3

私の場合、それは仮想環境に関連したエラーでした。そのため、新しい仮想環境を作成することができました。以下は、同じように役立つコマンドのリストです。

仮想環境のインストール:

pip install virtualenv

新しい仮想環境の作成:

virtualenv -p {env_name}

仮想環境のアクティブ化:

source env_name/bin/activate

仮想環境の無効化:

deactivate

OPは仮想envについて言及していないため、仮想envが使用されていない場合の答えは問題に対処しません。
MikeM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.