为什么这个Python程序不工作?AttributeError: 'module'对象没有属性

9 投票
4 回答
8678 浏览
提问于 2025-04-16 10:23

我写了一个非常简单的Python程序。

#!/usr/bin/env python
import random
x = random.uniform(-1, 1)
print str(x)

我是在命令提示符下运行这个程序的。

python random.py

结果出现了错误:

Traceback (most recent call last):
  File "random.py", line 2, in <module>
    import random
  File "D:\python practise\random.py", line 3, in <module>
    x = random.uniform(-1, 1)
AttributeError: 'module' object has no attribute 'uniform'

这个程序很简单,我不明白我哪里出错了。

(操作系统:Windows 7;Python版本:2.7)

4 个回答

3

你的问题是你把测试程序命名为“random.py”。当前工作目录会在其他任何地方之前被放在模块搜索路径上,所以当你写“import random”时,它会导入你自己的测试程序,而不是标准库里的random。

你可以改一下测试程序的名字,或者干脆去掉.py后缀,这样就能正常工作了。

4

不要把你的程序命名为“库”。

还有一个小建议:你不需要先把某个字符串存起来,然后再把它打印出来,直接生成后打印就可以了。

#!/usr/bin/env python
import random
print(random.uniform(-1, 1))

这样做也没问题哦;)

27

不要把你的文件命名为 random.py,因为它会自己导入自己,并且在里面寻找 uniform

这是Python导入东西时的一个小怪癖,它会先在当前文件夹里找,然后才会去 PYTHONPATH 里找。简单来说,给你的 .py 文件命名时,要小心不要和标准库里的模块同名。

撰写回答