2009-09-28 13 views
11

मैं पीआईएल का उपयोग नहीं कर सकता क्योंकि यह मेरा libjpeg नहीं ढूंढ सकता!पायथन पीआईएल मेरे "libjpeg" का पता नहीं लगा सकता

सबसे पहले, मैंने पीआईएल डिफ़ॉल्ट स्थापित किया। और जब मैं selftest.py भाग गया, यह मुझे दिया:

IOError: decoder jpeg not available 1 
items had failures: 1 of 57 in 
selftest.testimage 
***Test Failed*** 1 failures. 
*** 1 tests of 57 failed. 

फिर, मैं निर्देशों ऑनलाइन पीछा बदलने के लिए जनहित याचिका के setup.py

JPEG_ROOT = "/usr/lib" 

लिए क्योंकि जब मैं locate libjpeg, यह मैं क्या मिलता है:

locate libjpeg 
/usr/lib/libjpeg.so.62 
/usr/lib/libjpeg.so.62.0.0 
/usr/lib64/libjpeg.so.62 
/usr/lib64/libjpeg.so.62.0.0 
/usr/share/doc/libjpeg-6b 
/usr/share/doc/libjpeg-6b/README 
/usr/share/doc/libjpeg-6b/usage.doc 
/var/cache/yum/base/packages/libjpeg-6b-37.i386.rpm 
/var/cache/yum/base/packages/libjpeg-6b-37.x86_64.rpm 

तो, मैं setup.py install फिर से चला गया ... और selftest.py किया। और मुझे अभी भी वही त्रुटि मिलती है!

उत्तर

19

कम से कम 3 हेडर सेट जिन्हें आप इंस्टॉल करना चाहते हैं। 1 अधिक आप Tiff के

freetype, libjpeg, zlib जो सभी के CentOS पर निम्न पैकेज में हो जाएगा के साथ सौदा करना चाहते हैं:

== 32 बिट: zlib-devel.i386 libjpeg-devel। i386 freetype-devel.i386

== 64 बिट: zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64

इससे पहले कि आप निम्नलिखित variabl संपादित करना चाहते हैं जाएगा के रूप में आप क्या किया setup.py फ़ाइल में es:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

वहाँ मूल्यों की स्थापना अपने प्लेटफॉर्म पर आधारित/usr/lib या/usr/lib64 करने के लिए। एक बार ऐसा करने के बाद आप

python setup.py build --force 
python setup.py install 

जो पीआईएल के लिए अपने सभी lib को पुनर्निर्माण करने और उन्हें कच्चे स्थापित करने के लिए मजबूर करेगा।

+0

धन्यवाद! एफडब्ल्यूआईडब्लू, मैंने यही किया (64-बिट बॉक्स पर): 'sudo yum install zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64' फिर' सुडो पाइप इंस्टॉल पायल '(इसके लिए आपको पाइप की आवश्यकता होती है पैकेज प्रबंधक पहले से स्थापित है।) – DPlusV

3

आपको केवल लाइब्रेज हेडर की आवश्यकता है, न केवल लाइब्रेरी ही। आपके पास जो वितरण है, उसके आधार पर उन पैकेजों को आमतौर पर हेडर या देव में समाप्त होने वाली चीज़ कहा जाता है।

+0

धन्यवाद। मैं हेडर कैसे प्राप्त करूं? मेरे पास CentOS वितरण है। मैंने "libjpeg का पता लगाया" और कुछ भी नहीं मिला। हेडर – TIMEX

+2

उन्हें CentOS पर libjpeg-devel कहा जाता है। –

+0

'libjpeg-devel' स्थापित करने के लिए' पैकेज प्रबंधन टूल 'का उपयोग करें। ध्यान दें कि अन्य '-devel' पैकेज हो सकते हैं जिन्हें आपको अन्य प्रारूपों के लिए स्थापित करने की आवश्यकता है, उदाहरण के लिए। 'Libpng-devel'। – bobince

0

आज मुझे एक ही समस्या का सामना करना पड़ रहा था, और मुझे समाधान मिला है। असल में इसमें पीआईएल को हटाने, फिंक के माध्यम से लिपजेप स्थापित करना और पीआईएल को फिर से स्थापित करना शामिल है।

मैंने article लिखा है कि चरणबद्ध तरीके से यह कैसे करना है। यदि दिलचस्प है तो इसे देखें।

+4

लेख का लिंक काम नहीं करता है (अब)। –

3

मुझे एक ही समस्या थी। मेरे मामले में, मैं निर्धारित करने की आवश्यकता:

JPEG_ROOT="/usr/lib64/" 

के बजाय:

JPEG_ROOT="/usr/lib/" 

गुड लक।

1

आप पीआईएल के बजाय Pillow का उपयोग करने का भी प्रयास कर सकते हैं।

तकिया "पीआईएल के सक्रिय विकास को बढ़ावा देने" के लिए एक पीआईएल कांटा है। संस्करण 1.7.0 और 1.7.1 में उन्होंने बहु-संग्रह का समर्थन करने के लिए कुछ बदलाव किए हैं (changelog देखें)।

+0

तकिया के साथ एक ही समस्या; (और समाधान 'JPEG_ROOT = "/ usr/lib64 /" 'तकिया के लिए मदद नहीं करता है –

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