2014-12-28 3 views
1

lxml 및 pypy로 학습을하고 싶었 기 때문에 요세미티 Mac에 설치하기로 결정했습니다. 그러나 3 일간의 시험을 거친 후에도 lxml을 시도 할 수 없었습니다. 왜냐하면 설치가 제대로 안되기 때문입니다. 여기 요세미티에서 lxml과 pypy를 어떻게 설정할 수 있습니까?

내가 무슨 짓을했는지의 :

  1. homebrewxcode-select --install

    proix:~ user$ brew --version 
    0.9.5 
    
    proix:~ user$ gcc --version 
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
    Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn) 
    Target: x86_64-apple-darwin14.0.0 
    Thread model: posix 
    
  2. libxml2libxslt 최대 양조

    새로 설치나요 - 1.1 타르 libxml2를 코드 타르 3.4.1 및 libxslt를 코드를 .28; 잘 했어. 늑골은 건축되고 설치되었다.

    proix:~ user$ brew list 
    libxml2 libxslt 
    
    proix:~ user$ brew info 
    2 kegs, 409 files, 14M 
    
    proix:~ user$ ll /usr/local/Cellar/libxml2/2.9.2/lib/ 
    total 6096 
    drwxr-xr-x 8 user admin  272 27 Dez 11:46 . 
    drwxr-xr-x 13 user admin  442 27 Dez 11:46 .. 
    drwxr-xr-x 3 user admin  102 27 Dez 11:46 cmake 
    -r--r--r-- 1 user admin 1184284 27 Dez 11:46 libxml2.2.dylib 
    -r--r--r-- 1 user admin 1922024 27 Dez 11:46 libxml2.a 
    lrwxr-xr-x 1 user admin  15 27 Dez 11:46 libxml2.dylib -> libxml2.2.dylib 
    drwxr-xr-x 3 user admin  102 27 Dez 11:46 pkgconfig 
    -r--r--r-- 1 user admin  269 27 Dez 11:46 xml2Conf.sh 
    
    proix:~ user$ ll /usr/local/Cellar/libxslt/1.1.28/lib/ 
    total 1440 
    drwxr-xr-x 10 user admin  340 27 Dez 12:10 . 
    drwxr-xr-x 13 user admin  442 27 Dez 12:10 .. 
    -r--r--r-- 1 user admin 76728 27 Dez 12:10 libexslt.0.dylib 
    -r--r--r-- 1 user admin 101832 27 Dez 12:10 libexslt.a 
    lrwxr-xr-x 1 user admin  16 27 Dez 12:10 libexslt.dylib -> libexslt.0.dylib 
    -r--r--r-- 1 user admin 214344 27 Dez 12:10 libxslt.1.dylib 
    -r--r--r-- 1 user admin 326040 27 Dez 12:10 libxslt.a 
    lrwxr-xr-x 1 user admin  15 27 Dez 12:10 libxslt.dylib -> libxslt.1.dylib 
    drwxr-xr-x 4 user admin  136 27 Dez 12:10 pkgconfig 
    -r--r--r-- 1 user admin  288 27 Dez 12:10 xsltConf.sh 
    
  3. 그러나 이러한 새로운 버전을 사용하지 않는이 :

    $ xmllint --version 
    xmllint: using libxml version 20900 
    
  4. 그래서 나는 (부팅시 cmd를 + R) 복구 콘솔을 통해 /usr/lib 아래 libs가 투입합니다.

    $ xmllint --version 
    xmllint: using libxml version 20902` 
    

    경고의 말씀 : 재부팅 한 후 내가 예상 결과를 얻을! 일반 로그인 세션 중에이 작업을 시도하지 마십시오. 운영 체제가 libxml2.dylib을 더 이상 찾을 수없는 경우 시스템을 쓸모 없게 만듭니다.

  5. 는 테스트를 위해 VIRTUALENV 만들기 :

    virtualenv lxmllab 
    source lxmllab/bin/activate` 
    
  6. STATIC_DEPS=true sudo pip install lxml으로 LXML를 설치합니다. 뿐만 아니라 잘 작동 :

    (lxmllab)proix:~ user$ pip list 
    backports.ssl-match-hostname (3.4.0.2) 
    certifi (14.5.14) 
    cffi (0.6) 
    docutils (0.12) 
    ipython (2.3.1) 
    Jinja2 (2.7.3) 
    lxml (3.4.1) 
    MarkupSafe (0.23) 
    nose (1.3.4) 
    numpydoc (0.5) 
    pip (6.0.3) 
    py (1.4.26) 
    Pygments (2.0.1) 
    pyzmq (14.4.1) 
    setuptools (8.2.1) 
    Sphinx (1.2.3) 
    tornado (4.0.2) 
    
  7. 시험이 : 나는이 붙어있어 어디

    (lxmllab)proix:~ user$ pypy -c 'from lxml import etree' 
    Unknown libxml2 version: 20902 
    Traceback (most recent call last): 
        File "app_main.py", line 72, in run_toplevel 
        File "app_main.py", line 562, in run_it 
        File "<string>", line 1, in <module> 
        File "lxml.etree.pyx", line 270, in init lxml.etree (src/lxml/lxml.etree.c:199039) 
        File "lxml.etree.pyx", line 235, in lxml.etree.__unpackDottedVersion (src/lxml/lxml.etree.c:9383) 
    TypeError: unsupported operand type for int(): 'unicode' 
    
    (lxmllab)proix:~ user$ pypy 
    Python 2.7.3 (5acfe049a5b0, May 21 2013, 13:47:22) 
    [PyPy 2.0.2 with GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin 
    Type "help", "copyright", "credits" or "license" for more information. 
    And now for something completely different: ``redefining yellow seems like a 
    better idea'' 
    ---- from lxml import etree 
    Unknown libxml2 version: 20902 
    Traceback (most recent call last): 
        File "<stdin>", line 1, in <module> 
        File "lxml.etree.pyx", line 270, in init lxml.etree (src/lxml/lxml.etree.c:199039) 
        File "lxml.etree.pyx", line 235, in lxml.etree.__unpackDottedVersion (src/lxml/lxml.etree.c:9383) 
    TypeError: unsupported operand type for int(): 'unicode' 
    ---- 
    

그입니다. 나는 아무 소용, 수정의 몇 가지를 시도 :

  • 는 libxml2를의 위치에 LD_LIBRARY_PATH 및/또는 DYLD_LIBRARY_PATH 설정.
  • libxml2 dylibs를 virtualenv site-packages/lxml 폴더로 복사 중입니다.

누구나 내가이 일을하려면 어떻게해야하는지, 아니면 요세미티에서 일하는 lxml 라이브러리를 얻는 올바른 방법은 무엇입니까?

답변

1

파이썬은 CPython C API 바인딩을 사용하는 Cython 위에 구축 된 lxml로 인해 lxml과 작동하지 않습니다 (우연히도 그렇게 좋지는 않습니다). 대신 lxml-cffi 사용을 고려하십시오 https://github.com/amauryfa/lxml/tree/cffi

+0

안녕하세요 ... 도움을 주셔서 감사합니다 ... 시간을 찾기 위해 시간이 걸렸지 만 결국 찾았습니다 ...--) 최신 버전의 pypy로 업그레이드해야했습니다 (2.4.0), 그런 다음 나는'lxmlx-cffi' 버전을 내 실험을 위해 완벽하게 실행했다. (0.8.6) 그린렛0) LXML (3.4.0) PIP (6.0.3)의 readline (6.2.4.1) setuptools에 (8.2.1)'' $의 pypy 파이썬 2.7.8 (f5dcc2477b97 9 월 19 2014 18 : 09:54) [PyPy 2.4.0 with GCC 4.2.1 호환 애플 LLVM 5.1 (clang-503.0.38)] darwin에서 ---- lxml에서 가져 오기 etree ----' ** 위대한 작품! 많은 감사 ** – user6917