2016-09-22 19 views
0

私はプロジェクト用に自分の環境を設定しようとしていますが、pythonはpipでインストールしたモジュールを見つけることができません。仮想環境でPythonがパッケージを見つけることができません

私は次のことをやった:

mkdir helloTwitter 
cd helloTwitter 
virtualenv myenv 
Installing setuptools, pip, wheel...done. 
source myenv/bin/activate 

pip install tweepy 
Collecting tweepy 
    Using cached tweepy-3.5.0-py2.py3-none-any.whl 
Collecting six>=1.7.3 (from tweepy) 
    Using cached six-1.10.0-py2.py3-none-any.whl 
Collecting requests>=2.4.3 (from tweepy) 
    Using cached requests-2.11.1-py2.py3-none-any.whl 
Collecting requests-oauthlib>=0.4.1 (from tweepy) 
    Using cached requests_oauthlib-0.6.2-py2.py3-none-any.whl 
Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.4.1->tweepy) 
Installing collected packages: six, requests, oauthlib, requests-oauthlib, tweepy 
Successfully installed oauthlib-2.0.0 requests-2.11.1 requests-oauthlib-0.6.2 six-1.10.0 tweepy-3.5.0 

私はそれが見つからないと言うモジュールをインポートしようとします。

$ PATHの最初のエントリはhelloTwitter/myenv/bin です。すべてのパッケージが環境site-packagesディレクトリに表示されています。 私は正しいpythonとpipを使用しているようです。 どちらのpython出力helloTwitter/myenv/bin/python どちらピップ出力

私は間違って行くよどこに何かアドバイスhelloTwitter/myenv/bin/pip

+1

インポートエラーのスタックトレースをお知らせください。 –

+0

スタックトレースの場所を教えてください。 – Marcus

+0

>>モジュールをインポートしようとすると、モジュールが見つかりません。 - それで、実際にどうやって "言う?" –

答えて

3

$PATHを仮想環境を手動で設定しているようです。 myenv/bin/activateスクリプトの全体のポイントは、あなたのためにこれを世話することです。

仮想環境を有効にすると、pipを使用してインストールしたパッケージは、該当するvenv site-packagesディレクトリ(ケースではmyenv/lib/python2.7/site-packages)に配置されます。仮想環境で作業している場合(デフォルトの動作を想定)、pip --userのようなものは不要です。それはすべて自動です。

activateを実行した後、使用しているPythonバイナリをfind -iname tweepyで確認できます。

エイリアスも問題を引き起こす可能性があります。 whichは外部コマンドであり、常にこれらを取得するとは限りません。 type -a pythonはこれらをフラッシュします。

helloTwitter/myenv/bin/python -c 'import tweepy'を直接実行すると、簡単にテストできます。これがあなたが現在Pythonを実行している(つまりインポート例外をスローしていない)とは動作が異なる場合、これが問題です。

希望に役立ちます。

+0

タイプ-a python pythonは/ Users/Marcus/CodeProjects/helloTwitter/myenv/bin/pythonです。pythonは/ usr/bin/pythonです。 pythonは/ usr/bin/pythonです。私はあなたがPythonを直接実行することによって何を意味するか分からない。このディレクトリでスクリプトを実行できます。例:python helloTwitter.py >> print 成功 – Marcus

+0

インポートを実行しようとすると、例外も出力も出ません。 – Marcus

0

私は解決策を見つけたと思います。 1.パッケージをアンインストールし、それがシステムまたはユーザに含まれていないことを確認しました 2.仮想環境を再作成しました。 3. pythonとpipが使用されている環境を確認しました。 4.今度はパッケージをインストールするときに、--no-cache-dirオプションを追加しました。 パッケージは正常にインストールされます。 これでPythonはパッケージを見つけることができます。

derptop:environmentScience Marcus$ python 
>>> from tweepy import StreamListener 
>>> StreamListener 
<class 'tweepy.streaming.StreamListener'> 

私はsys.pathをチェックし、それは今、以前にそれが存在しない仮想環境からsite-packagesディレクトリが含まれています。私の知る限りsys.pathが間違っサイトパッケージディレクトリを参照して言うことができるようにsys.path

['', ....'/Users/Marcus/CodeProjects/environmentScience/myenv/lib/python2.7/site-packages'] 

出力。理由は分かりませんが。キャッシュのpipsを使用してサイトパッケージ参照がシステムにリセットされたのかどうか疑問に思っています。

関連する問題