2013-10-01 11 views
6

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

>>> from PIL import Image 
>>> img = Image.new('1', (200, 200)) 
>>> img.save('test-image.jpeg', 'JPEG') 

बढ़िया है,:

अजगर खोल से, मैं एक परीक्षण छवि प्रोग्राम के रूप में जनहित याचिका का उपयोग कर बना सकते हैं।

>>> import qrcode 
>>> qr_code = qrcode.make("1") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/main.py", line 8, in make 
    return qr.make_image() 
    File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/main.py", line 186, in make_image 
    from qrcode.image.pil import PilImage 
    File "/home/vagrant/.virtualenvs/env1/local/lib/python2.7/site-packages/qrcode/image/pil.py", line 5, in <module> 
    import Image 
ImportError: No module named Image 

आयात जनहित याचिका की छवि वर्ग क्यों QRCode नहीं कर सकते हैं, लेकिन यह खोल से काम करता है: हालांकि, मैं इस त्रुटि जब मैं एक मॉड्यूल है कि जनहित याचिका पर निर्भर करता है इस्तेमाल करने की कोशिश हो रही है?

+1

यह अंधेरे में एक शॉट का थोड़ा सा है, लेकिन ... क्या पीआईएल आयात से 'छवि ड्रॉ' भी खोल पर काम करता है? यदि वह मॉड्यूल किसी भी तरह से 'पीआईएल' पैकेज से गुम है, तो 'qrcode' मान लेगा कि' छवि ''PIL' पैकेज से भी गायब है और इसे शीर्ष स्तर से आयात करने का प्रयास करें, जिससे आप जो समस्या देख रहे हैं । – abarnert

+0

एक और संभावित संभावना यह है कि आप वास्तव में सही वर्चुअल वातावरण से परीक्षण नहीं कर रहे हैं। अपने खोल से, उसके बाद 'पीआईएल आयात छवि' से, बस 'छवि' टाइप करें और देखें कि यह आपको कौन सा पथ देता है। क्या यह '/ home/vagrant/.virtualenvs/env1/blah/blah' के अंदर है, या नहीं? – abarnert

उत्तर

5

यह आपके स्थापना के साथ एक मुद्दा है: Image मॉड्यूल, एक PIL मॉड्यूल के सबपैकेज के रूप में स्थापित किया गया है, जबकि पुस्तकालय आप उम्मीद का उपयोग कर रहे Image मॉड्यूल अजगर रास्ते में सीधे किया जाना है। साथ

import Image 

:

from PIL import Image 

फ़ाइल qrcode/image/pil.py में आसान समाधान को बदलने के लिए है।

+0

हाँ, पुराने स्कूल पीआईएल ने कभी-कभी एक रास्ता स्थापित किया, कभी-कभी दूसरा। बहुत से लोग स्पष्ट रूप से इस पैकेज के लिए 'sys.path' में पैकेज जोड़ देंगे, लेकिन यह हमेशा एक भयानक विचार था। तकिया ने अधिक समझदार व्यक्ति को चुना और लगातार इसके साथ चला गया, लेकिन वहां कुछ अन्य पैकेज हैं जो दूसरे की अपेक्षा करते हैं। – abarnert

+0

लेकिन ... यह काम नहीं करेगा। यदि आप [स्रोत] (https://github.com/lincolnloop/python-qrcode/blob/master/qrcode/image/pil.py) देखते हैं, तो यह पहले से ही 'पीआईएल आयात छवि' से प्रयास करता है, और केवल वापस आ जाता है जब यह विफल हो जाता है 'छवि आयात करें' करने के लिए। – abarnert

+0

इस मामले में, आपके Virtualenv के साथ कुछ गलत होना चाहिए। बस परीक्षण किया गया और यह काम करता है: मैं 'virtualenv so && स्रोत चला गया/bin/सक्रिय करें और पाइप स्थापित तकिया qrcode छह && python' टाइप किया और टाइप किया गया आयात qrcode; qrcode.make ("1")। शो() '। गरीब, टिप्पणी-फिट स्वरूपण के लिए खेद है। –

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