2011-01-21 63 views
7

我已经开始学习python了。我写了一个非常简单的程序。为什么这个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)

+6

3票严重吗? – user225312 2011-01-21 16:27:21

+1

在Windows上,shebang语法`#!usr/bin/env python`不是必需的;它完全没有。这是类Unix操作系统,以便shell可以知道如何运行脚本 – 2011-01-21 16:28:05

回答

24

不要命名您的文件random.py,它正在导入自己并在其中寻找uniform

这有点与怪癖Python如何进口的东西,它会在本地目录,然后再开始搜索PYTHONPATH。基本上,请小心地将您的.py文件命名为与其中一个标准库模块相同的文件。

2

你的问题是,你命名你的测试程序“random.py”。当前的工作目录是之前别的模块搜索路径上,所以当你说“进口随机”,它进口自己的测试程序而不是标准库中随机的。

重命名你的测试程序 - 或者只是把.py后缀关闭 - 它应该工作。

4

不要对你的程序作为一个图书馆。 就像一个提示:你不需要一个字符串存储的东西,并在生成后将其打印出来。

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

这将工作也没关系;)

1

你的问题的解决方案是重命名文件(random.py)到Python以外的东西内置插件,标准库,保留关键字等

不过我强烈建议您在尝试任何其他教程或书籍之前采取Python Tutorial。您尤其需要了解有关Python scopes and namespaces的更多信息。