8024


Pythonのvirtualenvにpipで`Tweepy`をインストールしようとしたのですが､以下の様なエラーがでました｡
`Tweepy`のインストール時に一緒にインストールされた`six`というライブラリが原因だと思うのですが､対処方法がわかりません｡

**エラー**

[code]

    (env) D:\>python
    Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tweepy
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "D:\Documents\env\lib\site-packages\tweepy\__init__.py", line 12, in <module>
        from tweepy.models import Status, User, DirectMessage, Friendship, SavedSearch, SearchResults, M
    odelFactory, Category
      File "D:\Documents\env\lib\site-packages\tweepy\models.py", line 7, in <module>
        from tweepy.utils import parse_datetime, parse_html_value, parse_a_href
      File "D:\Documents\env\lib\site-packages\tweepy\utils.py", line 10, in <module>
        from six.moves.urllib.parse import quote
    ImportError: No module named urllib.parse
    
[/code]

**pip freeze**

[code]

    (env) D:\>pip freeze
    matplotlib==1.2.0
    nltk==3.0.2
    numpy==1.9.2
    oauthlib==0.7.2
    PyYAML==3.11
    requests==2.6.0
    requests-oauthlib==0.4.2
    scikit-learn==0.15.2
    scipy==0.12.0
    six==1.9.0
    tweepy==3.3.0
    
[/code]

対処方法を教えて下さい｡

**追記**

シェルで`six`のヴァージョンを表示させてみたところ､`pip freeze`で表示したのとなぜか違います｡

[code]

    (env) D:\>python
    Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import six
    >>> six.__version__
    '1.2.0-mpl'
    
[/code]

**追記**

1､ アンインストールして`easy_install`でインストールを試みると以下のエラーで失敗しました｡

**エラー(easy_install使用時)**

[code]

    (env) D:\>python
    Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tweepy
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "build\bdist.win32\egg\tweepy\__init__.py", line 12, in <module>
      File "build\bdist.win32\egg\tweepy\models.py", line 7, in <module>
      File "build\bdist.win32\egg\tweepy\utils.py", line 10, in <module>
    ImportError: No module named urllib.parse
    
[/code]

2､ `matplotlib`の中に`six`があるみたいなのですが､もしかしてこれを参照している??

[code]

    >>> import six
    >>> six.__version__
    '1.2.0-mpl'
    >>> six
    <module 'six' from 'D:\Documents\env\lib\site-packages\matplotlib-1.2.0-py2.7-win32.egg\six.pyc'>
    >>>
    
[/code]


CC BY-SA 3.0
2015-03-17T11:17:34.867
8023
2015-03-17T14:59:35.073
2015-03-17T11:47:22.217
7232
7232
question
python twitter
No module named urllib.parse


自己解決しました｡

`matplotlib`の中に古いバージョンの`six`があり､`tweepy`がそれを参照しているようでした｡
`matplotlib`をインストールし直したところ治りました｡


CC BY-SA 3.0
2015-03-17T11:54:51.410
8024
2015-03-17T11:54:51.410
7232
8023
answer


sixはPython2とPython3のライブラリ構成の違いを吸収するための抽象ライブラリです。tweepyはsixを使ってPython2/3両対応しているのでしょう。

今回の問題は、既に書かれているとおり、matplotlibが古いsixを持っていたためのようですが、インストール時に最新版をインストールする `-U`
オプションを付けていれば問題にならなかったのだと思います。そういう意味では、tweeepyがsixのバージョンいくつ以上を必要としているのかを明示していなかったのが問題だったのだと思います。

依存バージョンを含めて最新バージョンをインストールするには以下のようにすればよかったのでしょう。

[code]

    pip install -U tweepy
    
[/code]

なお、質問されるときは、インストール手順を最初から（matplotlibをどうやってインストールしているのかを含めて）書くとアドバイスしやすいかと思います。また、easy_installコマンドは現在はあまり使う必要がないはずで、pipコマンドだけで十分だと思われます。


CC BY-SA 3.0
2015-03-17T14:59:35.073
8031
2015-03-17T14:59:35.073
806
8023
answer