2011-01-21 20 views
7

Python'u öğrenmeye başladım. Çok basit bir program yazdım.Bu python programı neden çalışmıyor?

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

Bunu komut isteminden çalıştırıyorum.

python random.py 

Bu hatayla döndü:

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' 

Bu çok basit bir program, ben bu yaptıklarımdan hata anlayamıyorum olduğunu. Bana yardım eden var mı? Şimdiden teşekkürler. (işletim sistemi: windows 7; python sürümü: 2.7)

+6

3 oy ciddi olarak mı? – user225312

+1

Pencerelerde shebang sözdizimi '#! Usr/bin/env python' gerekli değildir; kesinlikle hiçbir şey yapmaz. Unix benzeri işletim sistemleri için bu yüzden kabuk, –

+3

@Rafe komut dosyasını nasıl çalıştıracağını bilebilir ve ayrıca hiçbir zaman Unixy olmayan bir ortamda çalışacağını varsayar? –

cevap

24

Dosyanızın adı, random.py olarak isimlendirilmiş, kendisini ithal ediyor ve uniform ürününü arıyor.

Python'un öğeleri nasıl içe aktardığıyla ilgili bir tuhaflık var, önce yerel dizinde görünüyor ve ardından PYTHONPATH aramasına başlıyor. Temel olarak, .py dosyalarınızdan herhangi birinin standart kitaplık modüllerinden biri ile aynı olmasına dikkat edin.

+0

Teşekkürler, anladım. – narayanpatra

+1

Bu cevap yardımcı olduysa, lütfen kabul edildi olarak işaretleyin. – anijhaw

2

Sorununuz, "random.py" test programınızı adlandırmış olmanızdır. Geçerli çalışma dizini, modül arama yolunda başka bir şeyden önce, "rastgele içe aktar" dediğinizde, standart kitaplıktan ziyade kendi test programınızı alır.

Test programınızı yeniden adlandırın - ya da sadece .py son ekini alın - ve çalışmalıdır.

4

Programınızı bir Kitaplık olarak adlandırmayın. Ve tıpkı bir İpucu gibi: Bir şeyi saklamak ve oluşturduktan sonra yazdırmak için bir String'e ihtiyacınız yoktur.

1

sorununuza çözüm Python dışında bir yerleşik ins, standart kütüphaneler, ayrılmış anahtar sözcüklerine vb

Ancak Dosyanızı (random.py) yeniden adlandırma edilir);

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

Bu da iyi çalışır Başka bir öğretici veya kitap denemeden önce Python Tutorial numaralı telefonu almanızı kesinlikle öneririz. Özellikle Python scopes and namespaces hakkında daha fazla bilgi edinmeniz gerekiyor.