2010-06-26 16 views
8

Python 2.5.4 kullanıyorum ve ondalık modülü kullanmaya çalışıyorum. Onu tercümanda kullandığımda, bir sorunum yok. Aşağıdaki kodu koyduğunuzda,Python'da, ondalık modemi yorumlayıcıdan ziyade bir komut dosyasında nasıl kullanırsınız?

>>> from decimal import * 
>>> Decimal('1.2')+ Decimal('2.3') 
Decimal("3.5") 

Ama: ayrı bir dosya (denilen decimal.py) içinde

from decimal import * 
print Decimal('1.2')+Decimal('2.3') 

ve bir modül olarak çalıştırın, tercüman şikayet Örneğin, bu çalışır:

NameError: name 'Decimal' is not defined

Ben de ayrı bir dosyada bu kodu koyarak çalıştı

:

import decimal 
print decimal.Decimal('1.2')+decimal.Decimal('2.3') 
Ben modül olarak çalıştırdığınızda

, tercüman diyor: Neler oluyor

AttributeError: 'module' object has no attribute 'Decimal'

?

+0

Komut dosyasının etkileşimli yorumlayıcınızla aynı Python sürümüyle çalıştırıldığından emin misiniz? Kontrol etmek isterseniz, 'print sys.version' yazmayı deneyin. ithalat sys baskı sys.version ve Evet, tercüman o olduğunu yazıyor: –

+9

Belki yerine Python'un yerleşik bir –

+0

Senaryomun çalışan çalıştı ithal ediliyor decimal.py' 'adlı bir dosya oluşturduk aynı sürüm. Bilgisayarımda sadece bir sürümün yüklü olduğunu düşünüyorum. – jack

cevap

17

Komut dosyanızı ondalık.py olarak adlandırdınız, komut dizininin bulunduğu dizin yoldaki ilk dizidir. Modüller aranır, betiğiniz bulunur ve içe aktarılır. Bu istisnanın ortaya çıkmasına neden olan modülünüzde ondalık adınız yoktur.

Bu sorunu çözmek için, sadece foo.py, bar.py, baz.py, spam.py veya eggs.py gibi bir şeyin etrafında çaldığınız sürece betiği yeniden adlandırın.

+0

+ 1 OP henüz cevaplanmamış olmasına rağmen, param da bu konuda. Bu çok sık meydana gelen bir konudur. – tzot

+1

Teşekkür ederim gnibbler ve Daslch. – jack

3

olduğu gibi bu Python benim için çalışıyor 2.5.2

from decimal import * 
print Decimal('1.2')+Decimal('2.3') 

Seni kullanmalıdır diğer örnekte ondalık

from decimal import Decimal 
print Decimal('1.2')+Decimal('2.3') 

kullanmak istediğini belirtmek için teşvik edecek

import decimal 
print decimal.Decimal('1.2')+decimal.Decimal('2.3') 
+1

Yazım hatası yaptığınız için teşekkür ederiz. Ben koştum: import decimal print decimal.Decimal ('1.2') + decimal.Decimal ('2.3') ve hala AttributeError hatası var: 'module' object 'Decimal' özniteliği yok – jack

+1

aslen okumak sonrası "ithal ondalık baskı decimal.Decimal ('1.2') + ondalık '('2.3')" şimdi okumak için: "ithal ondalık baskı decimal.Decimal ('1.2') + ondalık. Ondalık ('2.3') " – jack

İlgili konular