2011-01-21 35 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的更多信息。