pipインストール/usr/local/opt/python/bin/python2.7:不正なインタプリタ:そのようなファイルまたはディレクトリはありません


90

何が問題なのかわかりませんが、どこにも行かないスタックオーバーフローソリューションに従って行き詰まっています。これについて私を助けてくれませんか?

  Monas-MacBook-Pro:CS764 mona$ sudo python get-pip.py
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    /tmp/tmpbSjX8k/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
    Collecting pip
      Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)
        100% |████████████████████████████████| 1.1MB 181kB/s 
    Installing collected packages: pip
      Found existing installation: pip 1.4.1
        Uninstalling pip-1.4.1:
          Successfully uninstalled pip-1.4.1
    Successfully installed pip-7.1.0
    Monas-MacBook-Pro:CS764 mona$ pip --version
    -bash: /usr/local/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

回答:


168

私は自作を使用してOSX 10.10に2.7をインストールしましたが、新しいインストールにはシンボリックリンクがありませんでした。走った

brew link --overwrite python

HomebrewでPythonをシンボリックリンクする方法で述べたように?そしてそれは問題を解決しました。


6
それは私を救った。FWIW、El CapitanでPythonを修正するには、次の3つの手順を実行する必要がありました。brewinstallpython; linkappspythonを作成します。brew link --overwrite python
2015年

その逆を行う方法は?
bubakazouba 2016年

3
リバース:リンク解除のpythonを醸造
アンダースB

1
これに追加するだけです。なんらかの理由で「xcode-select--install」を実行する必要があることがわかりました。「brewreinstallpython」は私がそれをするまで機能しませんでした。私の特定の例では、移行アシスタントを使用して、ある物理コンピューターから別の物理コンピューターに移動しました。これら2つの事柄の後、すべてが解決され、pip3が機能しました。
chrisallick 2018

Pythonはすでに正しくリンクされていました。助けになったのはpip3 install --upgrade pip、@ Excaliburがコメントで指摘したとおりです。
レトロバーティゴ

56

Pythonのインストールが2つ、またはpipのインストールが2つあり、そのうちの1つが部分的に削除されていると思います。

なぜ使うのsudo?理想的には、rootを使用する代わりに、ユーザーアカウントからすべてをインストールして実行できる必要があります。rootアカウントとローカルアカウントを一緒に使用すると、アクセス許可の問題が発生する可能性が高くなります(たとえば、「親ディレクトリは現在のユーザーによって所有されていません」という警告が表示されます)。

これを実行すると何が得られますか?

$ head -n1 /usr/local/bin/pip

これにより、どのPythonバイナリpipが使用しようとしているのかがわかります。それが指している場合は/usr/local/opt/python/bin/python2.7、これを実行してみてください:

$ ls -al /usr/local/opt/python/bin/python2.7

これが「そのようなファイルまたはディレクトリはありません」と表示されている場合、pipは削除されたPythonバイナリを使用しようとしています。

次に、これを試してください:

$ which python
$ which python2.7

実際に機能しているPythonバイナリのパスを確認します。

pipがどこかに正常にインストールされたように見えるので、それは/usr/local/bin/pip、の上位にあるpipの古いインストールの一部である可能性がありPATHます。これをテストするには、機能していないpipバイナリを次のように移動してみてください(必要な場合がありますsudo)。

$ mv /usr/local/bin/pip /usr/local/bin/pip.old

次に、pip --versionコマンドを再実行してください。うまくいけば、それは正しいバージョンを取得し、正常に実行されます。


素晴らしい説明。補足:プロジェクトをMercurialから解放するためにインストールされた言語のパッケージマネージャーをデバッグする必要があるため、これらすべてのコンピューターに対する信頼が失われます。おっと..そして今、新しいpythonエラー「AttributeErrorlocalrepository」
nicolas 2015年

1
私は同じ問題を抱えていますが、これらの指示に従った後でも、これは私にとってはうまくいきませんでした。PIPはまだ間違ったパスを使用しています。これについて別の方法はありますか?
Adam Starrh 2015年

5
私はピップをインストールする必要がありました:sudo /usr/bin/easy_install pip-ここでそれを発見:stackoverflow.com/questions/27308234/...
アダムStarrh

問題は、それがインストールされていますピップの唯一のバージョンだならば、あなたは運の出ているということである
einarc

55

OSXとそのバリアントの唯一のソリューション。

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7

1
シームレスでシンプルな方法で答えを提示しようとしました。
TheExorcist 2018

これは、Pythonを使用する他のプログラムに副作用をもたらす可能性があります。さらに、Python 2のサポート
kotoole

@kotooleあなたの答えから、あなたの目は見えるように見えますが、観察に失敗します。python2.7をpython3.xに置き換えるだけで、同じように機能します。
エクソシスト

1
@TheExorcistは残念ながら私たち全員にとって、Python2とPython3は異なる言語です。一方の言語用に記述されたコードは、もう一方の言語で実行すると壊れます。pythonをpython2.7ホールセールに置き換えると、他のアプリケーションが壊れてしまう可能性が高いようです。このソリューションは、鍵を忘れたときに玄関のドアを削除するのと同じように「機能」します。それはあなたを通り抜けますが、あなたの家が虫でいっぱいになり始めたときに泣きに来ないでください。
kotoole

@kotooleオフコース、あなたは正しいですが、時々私たちは現時点で必要なことをしなければなりません。
エクソシスト

32

ピップの修正

このエラーの場合:

~/Library/Python/2.7/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

この問題の原因は、pipにハードコードされた不正なPythonパスです(つまり、$ PATHを変更しても修正されません)。そのパスは、pipの最新バージョンではハードコーディングされていないため、はずのは次のとおりです。

pip install --upgrade pip

ただし、もちろん、このコマンドはpipを使用するため、同じエラーで失敗します。

この混乱から自分をブートストラップする方法:

  1. 実行 which pip
  2. そのファイルをテキストエディタで開きます
  3. 最初の行を#!/usr/local/opt/python/bin/python2.7からegに変更します#!/usr/local/opt/python2/bin/python2.7(パスのpython2に注意してください)、またはマシン上で機能しているpythonインタープリターへのパスを変更します。
  4. さて、pip install --upgrade pip(これはあなたのハックを上書きし、インタプリタの問題を修正する必要がある最新バージョンでpipを機能させます)

virtualenvの修正

私の場合、最初にvirtualenvから同じ問題が発生したことで、この問題を見つけました。

~/Library/Python/2.7/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

ここでの解決策は、実行することです

pip uninstall virtualenv
pip install virtualenv

そのコマンドを実行するとpipから同じエラーが発生する場合は、上記を参照してください。


1
うん、MacOSXでPython2.7と3.6を使用していて、その後3.6にアップグレードすると、この問題が発生しました。これは私のために働いた解決策でした(pip3 install --upgrade pip
エクスカリバー

いいえ:PIPトレースバック(最新の呼び出しの最後):中ファイル"は/ usr / local /ビン/ピップ"、7行目、<モジュール> pip._internal輸入メインはImportErrorから:pip._internalという名前のモジュール
einarc

@Excalibur受け入れられた回答の下に、コメントとしてソリューションを追加しました。それをありがとう!
レトロバーティゴ

26

インストールにsudoを使用して同じエラーが発生しました。(おっと)

brew install python
brew linkapps python
brew link --overwrite python 

これにより、すべてが正常に戻りました。


21
linkappsは非推奨です
Steve

15

MacOSXにpython2と3の両方をインストールしていたので、あらゆる種類のエラーが発生していました。

python2.7ファイル(/usr/local/bin/python2.7)の場所を見つけるためにどちらを使用しました

which python2.7

次に、実際のpython2.7のインストール場所をスクリプトが期待する場所にシンボリックリンクしました。

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7

2
命の恩人!ありがとうございました。
ブライアンフェグター

12

私も同様の問題を抱えていました。基本的に、pipは間違ったパス(古いインストールパス)またはpythonを探していました。次の解決策は私のために働いた:

  • Pythonパスがどこにあるかを確認しました(try which python
  • pipファイル(/usr/local/bin/pip2.7および/usr/local/bin/pip)の最初の行を確認しました。この行には、Pythonパスへの正しいパスが記載されている必要があります。私の場合、そうではありませんでした。私はそれを修正しました、そして今それはうまく働きます。

9

それが誰かを助ける場合、この他の質問で言及された解決策は、pipがアップグレード後に今日機能しなくなったときに私のために働いた:アップグレード後にpipが壊れた

以前にキャッシュされた場所が変更された場合に問題になると思われるため、次のコマンドでキャッシュを更新できます。

hash -r

9

操作を簡単にするために、以下のコマンドを使用してバージョン2を再インストールできます。

brew install python@2

次に、私のMacでは、次のようになります。

▶ python -V
Python 2.7.10

▶ python2 -V
Python 2.7.14

▶ python3 -V
Python 3.6.5

▶ pip2 -V
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

▶ pip3 -V
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

▶ pip --version
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

1
再インストールするためのreinstallコマンドがありbrewます:brew reinstall python@2
Valeriy Van

4

私も同じ問題を抱えていました。Python2.7と3.6の両方をインストールしています。Python 2.7はvirtualenv機能していましたが、Python3をインストールした後、virtualenvはバージョン2.7を探し続け、それを見つけることができませんでした。やってpip install virtualenvvirtualenvのののpython3バージョンをインストールしました。

次に、コマンドごとに、Python2を使用する場合は、 virtualenv --python=python2.7 somecommand


4

私は同じ問題を抱えていました、virtualenvは古いPythonパスを指していた。パスを修正すると、問題が解決しました。

$ virtualenv -p python2.7 env
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

$ which python2.7
/opt/local/bin/python2.7

# needed to change to correct python path
$ head  /usr/local/bin/virtualenv
#!/usr/local/opt/python/bin/python2.7 <<<< REMOVED THIS LINE
#!/opt/local/bin/python2.7 <<<<< REPLACED WITH CORRECT PATH

# now it works:
$ virtualenv -p python2.7 env
Running virtualenv with interpreter /opt/local/bin/python2.7
New python executable in env/bin/python
Installing setuptools, pip...done.

これはうまくいきました。しかし、それは長期的な修正ですか?この問題は他にもいくつかあることに気付いたので、インスタンスごとに変更する必要があり、機能しなくなりました。これによる長期的な影響が心配です。
ジェイク

間違いなく長期的な修正ではありません。私の場合、Python環境をいじくり回していたので、この状況に陥り、迅速な修正を探したと思います。virtualenvをアンインストールしてから、機能的なpython2.7pipで再インストールするとこのスティックになると思います。
dg 2018年

2

同じ問題が発生しました。私が実行しbrew link --overwrite python2た場合。まだありましたzsh: /usr/local/bin//fab: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory

cd /usr/local/opt/
mv python2 python

解決しました!これで、python2バージョンのファブリックを使用できます。

=== 2018/07/25更新

OS pythonがpython3にリンクされている場合、python2バージョンfabを使用する便利な方法があります。.shあなたの命令のために。

# fab python2
cd /usr/local/opt
rm python
ln -s python2 python

# use the fab cli
...

# link to python3
cd /usr/local/opt
rm python
ln -s python3 python

お役に立てれば。


2

このファイルの最初の行を編集することは私に働きました:

MBP-de-Jose:~ josejunior$ which python3

/usr/local/Cellar/python/3.7.3/bin/python3

MBP-de-Jose:~ josejunior$

#!/usr/local/opt/python/bin/python3.7

#!/usr/local/Cellar/python/3.7.3/bin/python3

2

この問題を解決するには、ターミナルウィンドウを閉じて、新しいウィンドウを再度開くだけです。

問題は、新しいpythonパスがbashrcに追加されないことです(ソースまたは新しいターミナルウィンドウのいずれかが役立ちます)。


1

私の場合、MacPortsを介してMacに他の2つのバージョンのPythonがすでにインストールされているため、Macから自作のPythonインストールを削除することにしました。これにより、エラーメッセージが表示されました。

brewを介してpythonを再インストールすると、問題が解決しました。



1

私の場合、centOS 7では、古いpipリンクを/ binから削除する必要がありました。

rm /bin/pip2.7 
rm /bin/pip

その後、それを再リンクします

sudo ln -s  /usr/local/bin/pip2.7 /bin/pip2.7

その後、

/usr/local/bin/pip2.7

動作します、これは動作するはずです


0

Pythonとpipの2つの異なるバージョンを持つことができます。

次のことを試してください。

pip2 install --upgrade pip その後 pip2 install -r requirements.txt

またはpip3、新しいPythonバージョンを使用している場合。


0

TLDR: pipパスで見つかったaはシンボリックリンクであり、参照された場所には実行可能ファイルが含まれていません。シンボリックリンクを更新する必要があります。

いくつかのことを理解するのに役立ちます。

  • 次のように入力するpythonpip、OSが検索/etc/pathsして、そのコマンドに関連付けられている実行可能ファイルを見つけようとします。を使用してそこにあるすべてを見ることができますcat /etc/paths
  • シェルが使用する実行可能ファイルの場所を決定するには、便利なコマンドがwhichあります。which pythonまたはを入力できますwhich pip。これにより、シェルがそのコマンドに使用する実行可能ファイルの場所がわかります。
  • この部分が鍵ですです。場所は実際の実行可能ファイルである場合とそうでない場合があり、シンボリックリンク(symlink)である可能性があります。
  • /etc/pathsを含むのが一般的であり、実際の実行可能ファイルへのシンボリックリンクの束であるの/usr/local/binも一般的です/usr/local/bin。実行可能ファイル自体ではありません。
  • シンボリックリンクで参照されている場所に実行可能ファイルが存在しない場合は、次のようなエラーが発生します。 bad interpreter: No such file or directory

そうは言っても、問題はpipシンボリックリンクである可能性が高く、リンクされた実行可能ファイルはおそらくその場所にもう存在しません。これを修正するには、次のようにします

  1. 実行可能ファイルの場所を見つける- which pip(このようなものを与える/usr/local/bin/pip
  2. シンボリックリンクの参照場所を確認しますls -l /usr/local/bin/pip | grep pip(次のように指定しますpip -> /usr/local/opt/python@3.7/bin/pip3
  3. 実行可能ファイルが参照された場所に存在するかどうかを確認します ls /usr/local/opt/python@3.7/bin/pip3(この問題が発生しているため、おそらく発生しません)。
  4. 古いシンボリックリンクを削除します rm -r /usr/local/bin/pip
  5. 実際の検索pip使用した場合は実行可能ファイルをhomebrew、それはになり/usr/local/optますするようなものを使用することができls /usr/local/opt/ | grep python、それを見つけること。
  6. pip実行可能ファイルに適切なシンボリックリンクを追加します。 ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.