为什么这个Python程序不工作?AttributeError: 'module'对象没有属性
我写了一个非常简单的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
文件命名时,要小心不要和标准库里的模块同名。