【问题标题】:Python3 on Ubuntu giving errors on help() commandUbuntu 上的 Python3 在 help() 命令上给出错误
【发布时间】:2014-12-18 05:58:40
【问题描述】:

我在 Ubuntu 14.04 上的 python3 shell 中使用了 help() 我得到了这个输出 请帮忙,不知道怎么回事。

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/_sitebuiltins.py", line 98, in __call__
import pydoc
File "/usr/lib/python3.4/pydoc.py", line 65, in <module>
import platform
File "/home/omega/platform.py", line 2, in <module>
print("System    : ",platform.uname().system)
AttributeError: 'module' object has no attribute 'uname'
>>> 

【问题讨论】:

    标签: python ubuntu python-3.x ubuntu-14.04 python-3.4


    【解决方案1】:

    问题在于platformhelp 使用的stdlib 模块的名称。通过在sys.path 中的 stdlib 之前创建一个您自己的具有相同名称的模块,您正在阻止 Python 使用标准模块。

    您自己的platform 模块尝试使用同名的stdlib 模块这一事实只会使问题更加复杂。那是行不通的;您在该模块中的 import platform 只是在导入自身。

    解决方案是不要像这样碰撞名称。查看list of the standard modules,如果您想直接或间接使用该模块中的功能,请不要创建与其中任何一个名称相同的任何内容。

    换句话说:将您的 platform.py 重命名为其他名称,或将其放入包中。

    【讨论】:

    • @MeghdeepRay:答案已经说明了您如何解决它:“将您的 platform.py 重命名为其他名称,或者将其放入一个包中。”而且,更一般地说,不要为您自己的任何顶级模块或脚本指定与任何 stdlib 模块相同的名称。
    【解决方案2】:
    File "/home/omega/platform.py", line 2, in <module>
    print("System    : ",platform.uname().system)
    

    就是这个问题,去platform.py修复一下,就OK了。它说,platform 没有任何名为 uname 的方法,你可能打错了。

    【讨论】:

    • 不,他不是想打电话给platform.uname,他只是打电话给help()。问题是 Python 试图调用platform.uname。它不仅想要任何旧函数,它还希望将那个函数记录为标准库的一部分。
    • 我认为这可能是一个错误?
    • 不,这不是错误,他只是隐藏了一个 stdlib 模块。 (嗯,也有显然他的代码中有一个错误 - 他有一个名为 platform 的模块,它导入并尝试使用 stdlib 模块platform。但即使没有那个错误,也只是隐藏了 stdlib模块会破坏事物。)
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多