Как настроить lxml и pypy на Yosemite?

Я хотел немного научиться с lxml и pypy, поэтому решил настроить его на моем Yosemite Mac. Но после трех дней попытки, я все еще не смог попробовать lxml, потому что я не могу правильно настроить свою настройку.

Вот что я сделал:

  • используя lxml и iterparse () для синтаксического анализа большого (+ - 1Gb) XML-файла
  • Генерация xml в python и lxml
  • Parse xml с lxml - значение элемента extract
  • lxml etree xmlparser удаляет ненужное пространство имен
  • Как открыть этот XML-файл для создания dataframe в Python?
  • Как использовать пространства имен xml с find / findall в lxml?
    1. xcode-select --install ли чистая установка homebrew и xcode-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. Заварили libxml2 и libxslt – libxml2 code tar 3.4.1 и libxslt code tar 1.1.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. Поэтому я переключил libs в /usr/lib через консоль восстановления (cmd + R во время загрузки). После перезагрузки я получаю ожидаемый результат:

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

      Слово предупреждения! Не пытайтесь делать это во время обычной сессии входа в систему. Это полностью делает вашу систему бесполезной, если ОС больше не может найти libxml2.dylib .

    5. Создайте виртуальный диск для тестирования:

       virtualenv lxmllab source lxmllab/bin/activate` 
    6. Установите lxml с помощью STATIC_DEPS=true sudo pip install 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' ---- 

    Вот где я застрял. Я попробовал пару исправлений, но безуспешно:

    • Установка LD_LIBRARY_PATH и / или DYLD_LIBRARY_PATH в расположение libxml2.
    • Копирование liblml2 dylibs в папку virtualenv site-packages/lxml .

    Кто-нибудь знает, что я должен сделать, чтобы заставить это работать, или какой правильный способ получить lxml lib, работающий под Yosemite?

  • env: python \ r: Нет такого файла или каталога
  • получить ошибки при импорте lxml.etree в python
  • Не удается установить OpenCV3 на Anaconda3 python3.6 на macOS
  • Python импортирует ошибку MySQLdb - Mac 10.6
  • Mac OSX - AttributeError: объект 'FigureCanvasMac' не имеет атрибута 'restore_region'
  • Установить lxml на Centos 7 - ошибка: команда 'gcc' не удалась с статусом выхода 4
  • One Solution collect form web for “Как настроить lxml и pypy на Yosemite?”

    PyPy не работает с lxml (по крайней мере, не очень хорошо, даже если это случайно), из-за того, что lxml строится поверх Cython, который использует привязки API CPython C. Рассмотрите возможность использования lxml-cffi вместо https://github.com/amauryfa/lxml/tree/cffi

    Python - лучший язык программирования в мире.