2016-06-12 16 views
6

जब मैं पीआईएल के साथ काम कर रहा हूं, मुझे बहुत सारे पीआईएल मॉड्यूल आयात करना होगा। मैं तीन तरीकों के साथ प्रयोग किया गया था यह करने के लिए है, लेकिन पिछले एक काम करता है सब मेरे लिए तार्किक किया जा रहा है के बावजूद:मेरा पायथन पीआईएल क्यों काम नहीं कर रहा है?

पूरा जनहित याचिका आयात और बुला यह कोड में मॉड्यूल है: नहीं

>>> import PIL 
>>> image = PIL.Image.new('1', (100,100), 0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'Image' 

सब कुछ आयात कर रहा है नहींं

>>> from PIL import * 
>>> image = Image.new('1', (100,100), 0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'Image' is not defined 

जनहित याचिका से कुछ मॉड्यूल आयात:: ठीक है

>>> from PIL import Image 
>>> image = Image.new('1', (100,100), 0) 
>>> image 
<PIL.Image.Image image mode=1 size=100x100 at 0xB6C10F30> 
>>> # works... 
जनहित याचिका से

मुझे यहां क्या नहीं मिला?

उत्तर

3

पीआईएल अपने स्वयं के किसी भी submodules आयात नहीं करता है। यह वास्तव में बहुत आम है।

तो जब आप from PIL import Image उपयोग करते हैं, आप वास्तव में Image.py फ़ाइल का पता लगाने और आयात कि, जब तुम सिर्फ PIL.Imageimport PIL के बाद कॉल करने का प्रयास है, तो आप एक खाली मॉड्यूल पर एक विशेषता देखने (प्रयास कर रहे हैं, जबकि जब से तुम आयात नहीं किया कोई भी submodules)।

एक ही तर्क लागू होता है कि क्यों from PIL import * काम नहीं करेगा - आपको छवि सबमिशन को स्पष्ट रूप से आयात करने की आवश्यकता है। किसी भी मामले में, from ... import * नामस्थान प्रदूषण के कारण खराब अभ्यास के रूप में देखा जाता है - आपकी सबसे अच्छी शर्त from PIL import Image का उपयोग करना है।

इसके अलावा, जनहित याचिका नहीं रह गया है बनाए रखा जा रहा है, लेकिन पश्च संगतता उद्देश्यों के लिए उपयोग करना चाहिए from PIL import Image आप सुनिश्चित कर सकते अपने कोड (के रूप में सिर्फ import Image का उपयोग करने के oppposed) अभी भी बनाए रखा Pillow के साथ संगत रहेगा।

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