2011-05-12 16 views
5

मुझे बस कुछ पैकेज की आवश्यकता है जो मेजबान मशीन (और मैं और लिनक्स ... में मौजूद नहीं हैं ... हमने ... साथ में अधिक समय नहीं बिताया ...)।लिनक्स पर प्रशासनिक अधिकारों के बिना पाइथन के लिए lxml कैसे स्थापित करें?

मैं उनकी तरह स्थापित करने के लिए प्रयोग किया है:

# from the source 
python setup.py install --user 

या

# with easy_install 
easy_install prefix=~/.local package 

लेकिन यह lxml साथ काम नहीं करता। मैं निर्माण के दौरान त्रुटियों की एक बहुत कुछ मिलता है:

x:~/lxml-2.3$ python setup.py build 
Building lxml version 2.3. 
Building without Cython. 
ERROR: /bin/sh: xslt-config: command not found 

** make sure the development packages of libxml2 and libxslt are installed ** 

Using build configuration of libxslt 
running build 
running build_py 
running build_ext 
building 'lxml.etree' extension 
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.6/src/lxml/lxml.etree.o -w 
In file included from src/lxml/lxml.etree.c:227: 
src/lxml/etree_defs.h:9:31: error: libxml/xmlversion.h: No such file or directory 
src/lxml/etree_defs.h:11:4: error: #error the development package of libxml2 (header files etc.) is not installed correctly 
src/lxml/etree_defs.h:13:32: error: libxslt/xsltconfig.h: No such file or directory 
src/lxml/etree_defs.h:15:4: error: #error the development package of libxslt (header files etc.) is not installed correctly 
src/lxml/lxml.etree.c:230:29: error: libxml/encoding.h: No such file or directory 
src/lxml/lxml.etree.c:231:28: error: libxml/chvalid.h: No such file or directory 
src/lxml/lxml.etree.c:232:25: error: libxml/hash.h: No such file or directory 
... 
src/lxml/lxml.etree.c:55179: error: Б─≤xmlNodeБ─≥ undeclared (first use in this function) 
src/lxml/lxml.etree.c:55179: error: Б─≤__pyx_v_c_nodeБ─≥ undeclared (first use in this function) 
src/lxml/lxml.etree.c:55184: error: Б─≤_node_to_node_functionБ─≥ undeclared (first use in this function) 
src/lxml/lxml.etree.c:55184: error: expected Б─≤;Б─≥ before Б─≤__pyx_v_next_elementБ─≥ 
src/lxml/lxml.etree.c:55251: error: Б─≤struct __pyx_obj_4lxml_5etree__ReadOnlyProxyБ─≥ has no member named Б─≤_c_nodeБ─≥ 
... 

http://lxml.de/installation.html कहना है कि वह कुछ निर्भरता है। लेकिन प्रशासनिक अधिकारों के बिना उन्हें कैसे स्थापित करें?

+0

क्या आपने वर्चुअलएन्व में यह कोशिश की है? – karantan

उत्तर

12

आप कोई व्यवस्थापक अधिकार है, और आप के लिए प्रासंगिक संकुल स्थापना के लिए व्यवस्थापक को समझाने नहीं कर सकते हैं, तो आप दो विकल्प हैं:

विकल्प 1 - libxml2 and libxslt के लिए डाउनलोड स्रोतों और संकलन और उन्हें अपने $HOME के तहत स्थापित कहीं, फिर उन प्रतियों के खिलाफ पायथन-एलएक्सएमएल बनाएं।

यह एक सुंदर शामिल उदाहरण है, क्योंकि यदि आप आगे निर्भरता खो रहे हैं तो आप लंबे समय तक डाउनलोड/संकलन कर सकते हैं।

विकल्प 2 - अपने सर्वर पर उपयोग किए गए लिनक्स के समान वितरण के लिए बाइनरी पैकेज डाउनलोड करें और अपनी होम निर्देशिका के अंतर्गत सामग्री निकालें।

उदाहरण के लिए, आप Ubuntu Lucid चला रहे हैं, आप पहली बार बाहर संस्करण अपने OS उपयोग कर रहा है पाते हैं और उसके बाद संकुल से वंचित हो रहे डाउनलोड:

% uname -m 
x86_64 
% aptitude show libxml2 | grep Version 
Version: 2.7.6.dfsg-1ubuntu1.1 

अगला संकुल आप की जरूरत डाउनलोड

% mkdir root ; cd root 
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxml2/libxml2_2.7.6.dfsg-1ubuntu1.1_amd64.deb 
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxslt/libxslt1.1_1.1.26-6build1_amd64.deb 
% wget http://us.archive.ubuntu.com/ubuntu/pool/main/l/lxml/python-lxml_2.2.4-1_amd64.deb 

सामग्री निकालें और lxml विलय देशी और शुद्ध अजगर कोड और शीर्ष करने के लिए साझा पुस्तकालयों ले जाते हैं, तो निकाली गई सामग्री को हटा दें:

उबंटू सर्वर से प्रत्यक्ष 0
% dpkg-deb -x libxml2_2.7.6.dfsg-1ubuntu1.1_amd64.deb . 
% dpkg-deb -x libxslt1.1_1.1.26-6build1_amd64.deb . 
% dpkg-deb -x python-lxml_2.2.4-1_amd64.deb . 
% mv ./usr/lib/python2.6/dist-packages/lxml . 
% mv ./usr/share/pyshared/lxml/* lxml 
% mv ./usr/lib . 
% rm *.deb 
% rm -rf usr 

अंत में, उन फ़ाइलों का उपयोग करने के लिए आपको $HOME/root में इंगित करने के लिए अपने एलडी_LIBRARY_PATH और पायथनपैथ पर्यावरण चर सेट करने की आवश्यकता है। इन में रखें अपने ~/.bashrc (या समतुल्य) तो वे स्थायी होते हैं:

% export LD_LIBRARY_PATH=$HOME/root/lib 
% export PYTHONPATH=$HOME/root 

आप साझा वस्तुओं का उपयोग कर पाया जा रहा है यह सुनिश्चित कर सकता ldd (अगर यह स्थापित है): तो फिर

% ldd $HOME/root/lxml/etree.so | grep $HOME 
libxslt.so.1 => /home/user/root/lib/libxslt.so.1 (0x00007ff9b1f0f000) 
libexslt.so.0 => /home/user/root/lib/libexslt.so.0 (0x00007ff9b1cfa000) 
libxml2.so.2 => /home/user/root/lib/libxml2.so.2 (0x00007ff9b19a9000) 

आप कर रहे हैं पायथन का परीक्षण करने के लिए तैयार:

% python 
>>> from lxml import etree 
+0

मैं डेबियन पर हूं। धन्यवाद, मैं कोशिश करूँगा। – CSZ

+0

यह विस्तृत विवरण के लिए धन्यवाद, फिर से काम करता है। – CSZ

+0

इसे सुनकर बहुत अच्छा लगा, अपने ऐप के साथ शुभकामनाएँ! – samplebias