Как я могу настроить lxml и pypy на Yosemite?
Я хотел кое-что изучить с помощью lxml и pypy, поэтому я решил настроить его на своем Yosemite Mac. Но после трех дней попыток я все еще не смог попробовать lxml, потому что не могу правильно настроить.
Вот что я сделал:
Сделал чистую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
Заваренlibxml2
а такжеlibxslt
- код libxml2 tar 3.4.1 и код libxslt tar 1.1.28; работал нормально. Libs были построены и установлены.
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
Но эти новые версии не используются:
$ xmllint --version
xmllint: using libxml version 20900
Так что я поменял libs под/usr/lib
через консоль восстановления (cmd + R во время загрузки). После перезагрузки я получаю ожидаемый результат:
$ xmllint --version
xmllint: using libxml version 20902`
Слово предупреждения! Не пытайтесь сделать это во время обычного сеанса входа в систему. Это делает вашу систему бесполезной, если ОС не может найтиlibxml2.dylib
больше
Создайте virtualenv для тестирования:
virtualenv lxmllab
source lxmllab/bin/activate`
Установите 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)
Попробуй это:
(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.Копирование библиотек libxml2 в virtualenvsite-packages/lxml
папка.Кто-нибудь знает, что я должен сделать, чтобы заставить это работать, или какой правильный способ заставить lxml lib работать под Yosemite?