web-dev-qa-db-ja.com

モジュールはOSXでpipを使用してインストールされますが、インポート時に見つかりません

私はpipを使用してさまざまなモジュールを正常にインストールし、それらは

pip list

といった:

beautifulsoup4 (4.4.1)
requests (2.10.0)
Scrapy (1.1.0)

ターミナルから

ただし、インポートしようとするたびに

import beautifulsoup4/import bs4またはimport Scrapyまたはimport requests

次のエラーが表示されます。

$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests

Update:起動した場合python正しいsite-packagesディレクトリにいるとき

$ pwd
/usr/local/lib/python2.7/site-packages
$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05)
>>> import requests
>>> import bs4
>>> import scrapy

その後、動作します。これは、ターミナルに直接書き込む場合の問題を解決します。ただし、通常の使用方法となるfile.py内で機能させる方法についてはわかりません。

私の知る限り、Python2.7のみがインストールされています。

File.pyから

File.pyをローカルフォルダーに保存している場合。これには、たとえば

import requests
from bs4 import BeautifulSoup

私が試みるとき

python file.py

同じエラーが発生します。

アプローチ

リストの他のモジュールでも同様です。私はpipがそれらをPythonが読んでいないディレクトリにインストールしていると思いますが、私が読んだことによると、それは正しいものです。

これらはすべてここにインストールされます。

/usr/local/lib/python2.7/site-packages

Padraic Cunninghamが要求する出力:

$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python

Leovpが要求する出力:

$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

スレッドはすでにチェックされています

次のスレッドを確認しましたが、残念ながら問題の解決に役立ちませんでした。

問題が何であるかのアイデア?

15
J0ANMM

あなたの問題はさまざまな理由が原因かもしれないので、ここにそれらのいくつかをリストしました:

探していたリンク: https://pythonhosted.org/setuptools/setuptools.html#development-mode

  • また、pythonインストール済みの2つのバージョン] ==がある場合にも発生します。アクセスしているpipが1つのバージョンで、pythonインタプリタは別のものです。

そのため、同じバージョンのpythonを使用してパッケージをインストールおよび使用していることを確認してください。

エイリアスを使用してこれを修正できます

まず、シェルエイリアスを設定します。

alias python=/usr/local/bin/python3

次に、プロンプトでそれを入力するか、~/.bashrcこれにより、端末からpythonを開くたびに正しいバージョンが開きます。

  • 上記の方法の両方がうまくいかない場合は、これを確認してください:

ImportError No module named または this

4
Ani Menon

ここでうまくいった答えは、基本的に質問のコメントで説明されているものです。ただし、明確で適切に構成された回答として説明することは有益だと思いました。

強調されたように、問題は、pipがインストールされているインタープリターを使用していなかったことです。コマンドwhichは、pipがモジュールをインストールした場所を示します。

$ which -a pip
/usr/local/bin/pip

そして、異なるpythonバージョンがあった場所:

$ which -a python
/usr/bin/python
/usr/local/bin/python

つまり、私のシステム/デフォルトpythonは

/usr/bin/python

pipは

/usr/local/bin/python

したがって、/usr/bin/pythonインタープリターが開始されたため、pythonと入力したときにインストールしたものをインポートできませんでした。

溶液

インストールするモジュールの宛先を指定して、pipを再度インストールします。これはsystem/default pythonの宛先でなければなりません。

これは2つのステップで行われました。

  1. bootstrap.pypa.io/get-pip.py からのget-pip.pyのダウンロード
  2. 次のコマンドでインストールする

    Sudo /usr/bin/python get-pip.py

Sudoがないとエラーが発生し、pipをインストールできなかったことに注意してください。

12
J0ANMM

同様の問題を修正しました。

背景を説明するために、brew install pythonを実行してpipとともにhomebrewをインストールします。このコマンドを実行することによる1つの欠点は、python2とpython3の両方をインストールすることです(場合によっては不利ではないかもしれません)。

pip install scrapy

しかし、import scrapyをしようとすると、ImportError: No module named scrapyと不平を言いました。


私の解決策: run brew doctor、リンクの破損を報告する必要があり、brew link pythonを実行するよう求められます。エラーが発生する場合がありますが、プロンプトの指示に従って移動してくださいbrew link pythonを正常に実行した後、すべてが動作するはずです。

5
Raymond

他の人に役立つ場合に備えて、これを追加しています。私にとって問題は、Anacondaを実行していて、pip3がAnacondaがリンクされているディレクトリとは異なるディレクトリにインストールしていたことでした。これを修正するには、conda deactivateconda activate

2
Eric Wiener

端末で_brew doctor_を実行すると、次のような警告が表示されます。

_Warning: The following directories do not exist:
/usr/local/sbin

You should create these directories and change their ownership to your account.
  Sudo mkdir -p /usr/local/sbin
  Sudo chown -R $(whoami) /usr/local/sbin
_

ターミナルで_Sudo mkdir -p /usr/local/sbin_と入力してEnterキーを押し、Sudo chown -R $(whoami) /usr/local/sbinと入力してからpythonを実行し、モジュールのインポートを再試行します。

0
user73772