【问题标题】:platform.system() not working on Windowsplatform.system() 在 Windows 上不起作用
【发布时间】:2016-02-26 01:48:42
【问题描述】:

我刚刚在我的 Windows 机器上安装了 WinPython(32 位),并试图运行在我的远程 linux 机器上运行的代码。该代码使用 Python 的 platform 库。问题是当我运行我的代码时,我的代码试图使用platform库的函数platform.system()

platform.system() 应该返回一个类似LinuxWindows 等的字符串,但在我的Windows 系统上,调用platform.system() 会得到以下结果:

>>> import platform
>>> print platform.system()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'system'

任何想法为什么会发生上述情况?我拥有的 WinPython 基于最新的 Python 2.7(我认为是 2.7.10),而 Python 2.7 确实有一个 platform.system() 方法,如此处所述:https://docs.python.org/2/library/platform.html

所以我不确定是什么问题。有什么想法吗?

【问题讨论】:

  • 您是否将文件命名为platform.py
  • 或名为platform的文件或目录?
  • 或名为platform 的目录具有__init__.py ?
  • 我没有将任何东西命名或重命名为 playtform.py 或类似的东西。我在“Lib”文件夹中找到了 platform.py 文件,该文件夹确实有 system() 函数的定义。但由于某种原因,它没有被调用
  • 在解释器中输入import platform 然后只输入platform 会显示什么?

标签: python windows python-2.7


【解决方案1】:

当你import platform 不是内置模块时,你得到的platform 绝对看起来像。您应该找出究竟导入了什么。

我相信以下内容应该打印出来找到所有候选人。在你的情况下打印什么?

import os, sys
for p in sys.path:
    try:
        for fn in (os.listdir(p or '.')):
            if 'platform' in fn.lower():
                print os.path.join(p, fn)
    except OSError:
        print ':skipped', p

【讨论】:

    【解决方案2】:

    这个已经在winpython2.7.10 32位上试过了:

    import platform;platform.system()

    【讨论】:

    • 在 python 3.5 windows 7 上相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2017-06-14
    • 2014-11-01
    • 2012-06-13
    相关资源
    最近更新 更多