2012-03-24 1 views
1

Сначала я установил lxml без использования pip (Python 2.7.2 на Mac OS 10.6.8). Затем я прочитал this post, и я снова установил его, используя pip (sudo pip install lxml). У меня все еще была проблема:Установка lxml с python на mac

Я могу импортировать lxml (import lxml), но я не могу использовать from lxml import etree. У меня есть сообщение об ошибке:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-2.3.3-py2.7-macosx-10.6-intel.egg/lxml/etree.so, 2): Symbol not found: _htmlParseChunk 
    Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-2.3.3-py2.7-macosx-10.6-intel.egg/lxml/etree.so 
    Expected in: flat namespace 
in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-2.3.3-py2.7-macosx-10.6-intel.egg/lxml/etree.so 

Затем я попытался установить LXML от источника следующих these instructions, и у меня есть сообщение об ошибке:

checking whether we are cross compiling... configure: error: in `/Users/my_name/Applications/lxml/lxml-2.2.2/build/tmp/libxml2-2.7.8': 
configure: error: cannot run C compiled programs. 
If you meant to cross compile, use `--host'. 
See `config.log' for more details 
Traceback (most recent call last): 
    File "setup.py", line 115, in <module> 
    STATIC_CFLAGS, STATIC_BINARIES), 
    File "/Users/my_name/Applications/lxml/lxml-2.2.2/setupinfo.py", line 50, in ext_modules 
    libxslt_version=OPTION_LIBXSLT_VERSION) 
    File "/Users/my_name/Applications/lxml/lxml-2.2.2/buildlibxml.py", line 198, in build_libxml2xslt 
    call_subprocess(configure_cmd, cwd=libxml2_dir, **call_setup) 
    File "/Users/my_name/Applications/lxml/lxml-2.2.2/buildlibxml.py", line 158, in call_subprocess 
    raise Exception('Command "%s" returned code %s' % (cmd_desc, returncode)) 
Exception: Command "./configure --without-python --disable-dependency-tracking --disable-shared --prefix=/Users/my_name/Applications/lxml/lxml-2.2.2/build/tmp/libxml2" returned code 1 

Наконец, я последовал второй советовать из this answer и I использовали командную строку sudo STATIC_DEPS=true /usr/bin/easy_install-2.7 lxml. Он установил lxml в поставляемую Apple систему Python 2.7, а не в версию, которую я сейчас использую. Положительный момент: если я запустил Apple-Python, я могу from lxml import etree.

Отрицательный момент: Я до сих пор не знаю, как установить lxml на другую версию python. Есть идеи?

Я в настоящее время использую /Library/Frameworks/Python.framework/Versions/2.7/bin/python.

+0

возможно дубликат [Нужна помощь в установке LXML на OS X 10.7] (HTTP://stackoverflow.com/questions/7961577/need-help-installing-lxml-on-os-x-10-7) – bernie

+0

другая версия OSX в этом вопросе, но, возможно, достаточно, чтобы вы собрались – bernie

+0

К сожалению, построение lxml из источник не работает. – Antonin

ответ

2

Для версии используемого Python вам необходимо установить отдельный easy_install. Для получения более подробной информации см. Ответ here. После этого вы можете запустить команду easy_install использовать его:

STATIC_DEPS=true easy_install-2.7 lxml 

UPDATE: Из ваших комментариев, теперь вы сообщаете об ошибке разрешения показывая еще один путь Python, тот, который, как представляется, быть MacPorts установлен Python: /opt/local/Library/Frameworks. Вам нужно выяснить, какой Python вы хотите использовать. Если на самом деле вы хотите использовать MacPorts, просто установите порт lxml с MacPorts. Это самое простое решение.

$ sudo port selfupdate 
$ sudo port install py27-lxml 

В противном случае, вам необходимо установить easy_install с другой (python.org?) Python 2.7.2. Я бы рекомендовал использовать Distribute, более современные вилки из `Setuptools', и вы должны убедиться, что вы используете правильный Python:

$ curl -O http://python-distribute.org/distribute_setup.py 
$ export PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" 
$ which python2.7 # should be in the path above 
$ python2.7 distribute_setup.py 
$ STATIC_DEPS=true easy_install-2.7 lxml 
+0

Итак, сначала я установил easy_install с помощью 'sh setuptools-0.6c11-py2.7.egg' (после загрузки яйца [здесь] (http://pypi.python.org/pypi/setuptools#downloads), затем я изменил свой path ('export PATH ="/Library/Frameworks/Python.framework/Версии/2.7/bin: $ {PATH} "'), и, наконец, я установил lxml ('STATIC_DEPS = true easy_install-2.7 lxml'). проблема с этой последней командой: 'error: невозможно создать или удалить файлы в каталоге установки' – Antonin

+0

' При попытке добавить или удалить файлы в каталоге установки произошла ошибка: [Errno 13] Разрешение отклонено: '/ opt/local/Library/Frameworks/Python.framework/Версии/2.7/lib/python2.7/site-packages/test-easy-install-1180.write-test '} ' – Antonin

+0

Кстати, какая разница с' STATIC_DEPS = true easy_install lxml'? (Без -2.7) – Antonin

 Смежные вопросы

  • Нет связанных вопросов^_^