使用 platform.version 确定 Python 版本

Determining Python version with platform.version

我正在尝试运行一个Python包(ig-markets-api-python-library,它有股价流功能),我以前有过 运行ning,我正在失去理智试图弄清楚为什么我不能让它再次工作。这可能是一个菜鸟问题,所以感谢您的帮助。我正在 运行ning Python 3.5.1 和 Anaconda 2.4.1(64 位),我 运行 进入以下错误:

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'

所以出现错误是因为 bunch 模块试图调用 iteritems 方法,但这是一个 Python 2 方法。查看来自 bunchpython3_compat.py 的代码,它使用 识别 Python 版本来自 plaform 的 version() 方法,但 _IS_PYTHON_3 始终为 false:

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() returns 关于我的操作系统的信息:

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

... 这与 platform 文档一致。当然我在这里遗漏了什么?这段代码可以工作吗?

看起来他们有点困惑。

>>> platform.python_version()
'2.7.10'

你应该改变:

import platform

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

至:

import sys

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

确认:在 Ubuntu 下,pip install trading_ig 确实安装了旧版本。 在 Mac 下它不会发生。

所以正确的模块安装方式是:

(前提是你已经用pip安装了模块)

$ 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