2011-01-21 21 views
7

मैंने अजगर सीखना शुरू कर दिया है। मैंने एक बहुत ही सरल कार्यक्रम लिखा था।यह पायथन प्रोग्राम क्यों काम नहीं कर रहा है?

#!/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' 

यह एक बहुत ही साधारण प्रोग्राम, मैं नहीं समझ सकता क्या गलती मैं इस में किया था। क्या कोई इस में मेरी मदद कर सकता है? अग्रिम में धन्यवाद। (ऑपरेटिंग सिस्टम: विंडोज 7, अजगर संस्करण: 2.7)

+6

3 वोट गंभीरता से? – user225312

+1

विंडोज़ पर शेबैंग सिंटैक्स '#! Usr/bin/env python' आवश्यक नहीं है; यह बिल्कुल कुछ नहीं करता है। यह यूनिक्स की तरह ओएस के लिए है ताकि खोल पता हो सके कि स्क्रिप्ट –

+3

@ राफ को कैसे चलाया जाए, यह भी चोट नहीं पहुंचाता और क्यों मानता है कि यह हमेशा एक गैर-यूनिक्स वातावरण में चलाएगा? –

उत्तर

24

अपनी फ़ाइल random.py का नाम नहीं है, यह अपने आप में आयात और उस में uniform की तलाश में है।

यह के साथ एक मोड़ का एक सा कैसे अजगर चीजों का आयात करता है, यह पहली स्थानीय निर्देशिका में लग रहा है और फिर शुरू होता है PYTHONPATH खोज है। असल में, अपने .py फ़ाइलों में से किसी एक को मानक लाइब्रेरी मॉड्यूल के समान नाम देने का सावधानी बरतें।

+0

धन्यवाद, मुझे समझ में आया। – narayanpatra

+1

अगर वह उत्तर उपयोगी था तो कृपया इसे स्वीकार्य के रूप में चिह्नित करें। – anijhaw

2

आपकी समस्या यह है कि आपने अपना परीक्षण प्रोग्राम "random.py" नाम दिया है। वर्तमान कार्यशील निर्देशिका किसी अन्य चीज़ से पहले मॉड्यूल खोज पथ पर है, इसलिए जब आप "आयात यादृच्छिक" कहते हैं, तो यह मानक लाइब्रेरी यादृच्छिक के बजाय आयात करता है।

अपने परीक्षण कार्यक्रम का नाम बदलें - या बस .py प्रत्यय बंद करें - और इसे काम करना चाहिए।

4

लाइब्रेरी के रूप में अपना प्रोग्राम नाम न दें। और बस एक युक्ति के रूप में: आपको स्ट्रिंग को कुछ संग्रहित करने की आवश्यकता नहीं है और इसे उत्पन्न करने के बाद इसे प्रिंट करना आवश्यक नहीं है।

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

यह भी ठीक से काम करेंगे;)

1

आपकी समस्या का हल बनाया-इन, मानक पुस्तकालयों, सुरक्षित कीवर्ड आदि

हालांकि

मैं अजगर के अलावा कुछ के लिए अपनी फ़ाइल (random.py) का नाम बदलने है दृढ़ता से अनुशंसा करते हैं कि आप किसी अन्य ट्यूटोरियल या पुस्तक को आजमाने से पहले Python Tutorial लें। आपको विशेष रूप से Python scopes and namespaces के बारे में अधिक जानने की आवश्यकता है।

संबंधित मुद्दे