2016-05-26 15 views
0

私は以前実行していたPythonパッケージ(ig-markets-api-python-library、株価ストリーミング機能を備えています)を実行しようとしています。なぜ私はそれを再び働かせることができないのか理解しようとする私の心。これはちょっとした質問になるかもしれないので、助けてくれてありがとう。 モジュールを呼び出すようにしようとしているので、だから、エラーが生じているplatform.versionを使ってPythonのバージョンを調べる

Traceback (most recent call last): 
    File "setupStreamer.py", line 8, in <module> 
    import ig_streamer 
    File "/ig-tools-python/ig_streamer.py", line 13, in <module> 
    from trading_ig import (IGService, IGStreamService) 
    File "/opt/conda/lib/python3.5/site-packages/trading_ig/__init__.py", line 17, in <module> 
    from .rest import IGService 
    File "/opt/conda/lib/python3.5/site-packages/trading_ig/rest.py", line 15, in <module> 
    from .utils import (_HAS_PANDAS, _HAS_BUNCH) 
    File "/opt/conda/lib/python3.5/site-packages/trading_ig/utils.py", line 21, in <module> 
    from infi.bunch import bunchify 
    File "/opt/conda/lib/python3.5/site-packages/infi/bunch/__init__.py", line 31, in <module> 
    from .python3_compat import * 
    File "/opt/conda/lib/python3.5/site-packages/infi/bunch/python3_compat.py", line 20, in <module> 
    iteritems = dict.iteritems 

AttributeError: type object 'dict' has no attribute 'iteritems' 

:私はアナコンダの2.4.1(64ビット)でのPython 3.5.1を実行している、と私は下のエラーに遭遇しますiteritemsメソッドですが、これはPython 2メソッドです。 からpython3_compat.pyためのコードを見てみると、それはplaformからバージョン()メソッドを使用してPythonのバージョンを識別しますが、_IS_PYTHON_3は常に偽です:

import platform 

_IS_PYTHON_3 = (platform.version() >= '3') 

... 
# dict.iteritems(), dict.iterkeys() is also incompatible 
if _IS_PYTHON_3: 
    iteritems = dict.items 
    iterkeys = dict.keys 
else: 
    iteritems = dict.iteritems 
    iterkeys = dict.iterkeys 

私のマシン上で、platform.version()私のオペレーティングシステムに関する情報を返します

>>> import platform 
>>> platform.version() 
'#48~14.04.1-Ubuntu SMP Fri Dec 18 10:24:49 UTC 2015' 

...そしてそれは、インラインウィットありますh プラットフォームドキュメント確かに私はここに何かを逃している?このコードはこれまでどおり動作しますか?

+1

それはdoesnのOS Xでもうまくいけば、作者が 'sys.version'や多分' platform.python_version'を探していたと思います。パッケージは、 '' munch'(https://github.com/dsc/bunch/issues/32)のために推奨されなくなりました。 – jonrsharpe

+0

実際、 'platform.version()'は、Pythonのバージョンではなく、OSのバージョン(Windows 7では6.1.xxxxなど)を返します。 – kindall

+0

そして 'munch'は[動作中のバージョンチェックがあります](https://github.com/Infinidat/munch/blob/master/munch/python3_compat.py#L3)。 – jonrsharpe

答えて

1

少し混乱しているように見えます。

>>> platform.python_version() 
'2.7.10' 
+0

そして、彼らは明らかに 'tox.ini'を定義するだけではなく、テストを実行する必要があることを理解していませんでした... – jonrsharpe

1

あなたは変更する必要があります。

import platform 

_IS_PYTHON_3 = (platform.version() >= '3') 

へ:

import sys 

_IS_PYTHON_3 = (sys.version >= '3') 
1

確認:Ubuntuの下、pip install trading_igは、古いバージョンをインストールしません。 Macでは発生しません。

ので、モジュールをインストールするための正しい方法は次のとおりです。

(すでにピップとモジュールをインストールしている場合のみ)

$ pip uninstall trading_ig 

(そして)

$ git clone https://github.com/ig-python/ig-markets-api-python-library 
$ cd ig-markets-rest-api-python-library 
$ python setup.py install 
関連する問題