Tidak dapat menginstal Lxml di Mac os x 10.9

234

Saya ingin menginstal Lxml sehingga saya dapat menginstal Scrapy.

Ketika saya memperbarui Mac saya hari ini, saya tidak dapat menginstal ulang lxml, saya mendapatkan kesalahan berikut:

In file included from src/lxml/lxml.etree.c:314:
/private/tmp/pip_build_root/lxml/src/lxml/includes/etree_defs.h:9:10: fatal error: 'libxml/xmlversion.h' file not found
#include "libxml/xmlversion.h"
         ^
1 error generated.
error: command 'cc' failed with exit status 1

Saya telah mencoba menggunakan brew untuk menginstal libxml2 dan libxslt, keduanya diinstal dengan baik tetapi saya masih tidak dapat menginstal lxml.

Terakhir kali saya menginstal, saya perlu mengaktifkan alat pengembang di Xcode tetapi sejak diperbarui ke Xcode 5 itu tidak memberi saya opsi itu lagi.

Adakah yang tahu apa yang harus saya lakukan?

David O'Regan
sumber
3
PS: Saya sarankan menggunakan: pip3.4 install lxmlatau STATIC_DEPS=true pip3.4 install lxmlperintah jika Anda menargetkan instalasi khusus untuk Python3 (beradaptasi dengan versi Anda, bash penyelesaian TAB adalah teman Anda); sehingga Anda menginstal untuk versi spesifik dari program target Anda yang menggunakan lib ini / ini. Kalau tidak mudah untuk menghabiskan 30 juta menginstal lib untuk penerjemah yang salah ;-)
Phil L.
3
Pastikan untuk menandai jawaban yang benar sebagai solusi agar orang lain dapat menggunakan pertanyaan Anda sebagai panduan ketika mereka memiliki masalah yang sama :)
Parker

Jawaban:

500

Anda harus menginstal atau meningkatkan alat baris perintah untuk xcode. Coba ini di terminal:

xcode-select --install
tinylee
sumber
24
Saya mendapatkan "Tidak dapat menginstal perangkat lunak karena saat ini tidak tersedia dari server Pembaruan Perangkat Lunak."
kelorek
7
Perlu dicatat bahwa Anda sepertinya mendapatkan "Tidak dapat menginstal perangkat lunak karena saat ini tidak tersedia dari server Pembaruan Perangkat Lunak." ketika alat sudah diinstal.
wombat
Beberapa catatan tentang cara memeriksa secara manual apakah sudah diinstal - stackoverflow.com/a/20834890/255961
studgeek
1
Bekerja dengan baik pada 10.10.3. Tidak yakin mengapa orang lain perlu memanipulasi cflags.
Eric Chen
1
Dan bekerja untuk saya setelah meningkatkan ke El Capitan (10.11).
Łukasz
193

Saya memecahkan masalah ini pada Yosemite dengan menginstal dan menautkan libxml2serta libxsltmelalui minuman:

brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force

Jika Anda telah memecahkan masalah menggunakan metode ini tetapi muncul kembali di lain waktu, Anda mungkin perlu menjalankan ini sebelum empat baris di atas:

brew unlink libxml2
brew unlink libxslt

Jika Anda mengalami kesalahan izin dengan Homebrew, terutama pada El Capitan, ini adalah dokumen yang sangat membantu . Intinya, terlepas dari versi OS X, coba jalankan:

sudo chown -R $(whoami):admin /usr/local
Markus Amalthea Magnuson
sumber
24
Jawaban yang paling berguna. Sungguh luar biasa bagaimana xcode-select mendapatkan begitu banyak suara. Jika Anda menggunakan minuman, Anda sudah memilih kode atau menginstal xcode sejak lama.
Marcos Eliziário Santos
5
@ MarcosEliziárioSantos Kata "install" di xcode-select --installagak menyesatkan. Saya menemukan bahwa setelah memutakhirkan dari Mavericks ke Yosemite, saya perlu menjalankan xcode-select --installlagi untuk meningkatkan ke Alat Baris Perintah Yosemite. Ini (sebagian) memecahkan masalah yang saya hadapi, dan dalam hal apa pun tidak akan berbahaya untuk dijalankan secara berlebihan.
Noach Magedman
2
@ MarcosEliziárioSantos mungkin karena jawaban teratas memperbaiki masalah bagi kebanyakan orang. Solusi ini berfungsi sebagai solusi, tetapi saya mengalami masalah serupa dengan libmemcache beberapa detik kemudian. Jawaban teratas memperbaiki masalah. Setiap orang harus mempertimbangkan metode ini hanya setelah mencoba jawaban teratas terlebih dahulu.
Rafal Es
@ MarcosEliziárioSantos satu hal lagi - Saya menggunakan minuman tetapi itu adalah instalasi baru (saya hanya menginstal XCode melalui AppStore, yang cukup untuk menginstal homebrew).
Rafal Es
Juga, Homebrew selalu merusak izin saya. Saya menggunakan solusi Xcode.
sudo
102

Anda dapat memecahkan masalah Anda dengan menjalankan ini pada commandline:

 STATIC_DEPS=true pip install lxml

Itu benar-benar membantu saya. Penjelasan tentang dokumen

André Augusto
sumber
Terima kasih banyak. Ini menghemat banyak waktu.
lukecampbell
Berfungsi dengan baik di OSX 10.9.5
user9869932
Terima kasih! Berfungsi dengan baik di macOS 10.14
jolvera
48

Saya mencoba sebagian besar solusi di atas, tetapi tidak ada satupun yang bekerja untuk saya. Saya menjalankan Yosemite 10.10, satu-satunya solusi yang berhasil bagi saya adalah mengetikkan ini di terminal:

sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml

EDIT: Jika Anda menggunakan virtualenv, sudo di awal tidak diperlukan.

robinsj
sumber
1
Solusi ini juga berfungsi pada Mavericks! Jika Anda menggunakan virtualenvsudo tidak diperlukan.
Mauro Baraldi
Milik saya masih menghasilkan OSError: [Errno 1] Operation not permitted: '/usr/bin/build'meskipun menjalankan perintah sebagai sudo. Ada ide?
PLPeter
@PLPeeters Versi python mana yang Anda jalankan dan versi OS mana?
robinsj
Saya menggunakan beta El Capitan (jadi 10.11) dan menggunakan Python 2.7 untuk ini. Saya kira itu mungkin ada hubungannya dengan El Capitan ...
PLPeeters
Anda adalah penyelamat hidup. El capitan berfungsi, dalam virtualenv tidak perlu sudo. Terima kasih!
jacoor
24

Ini telah mengganggu saya untuk sementara waktu. Saya tidak tahu cukup internal tentang python distutils dll, tetapi jalur yang disertakan di sini salah. Saya membuat hack jelek berikut ini untuk menahan saya sampai orang-orang python lxml dapat melakukan perbaikan yang tepat.

sudo ln -s  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2/libxml/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml
jdkoftinoff
sumber
19

Menginstal secara global ... OS X 10.9.2

xcode-select --install
sudo easy_install pip
sudo CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml
Samy Vilar
sumber
1
Ini berhasil bagi saya, harus memperbarui alat dev xcode terlebih dahulu menggunakan: xcode-select --install
erickthered
Ini berhasil. Saya sudah menginstal alat-alat baris perintah xcode, tetapi sepertinya perlu diperbarui.
Steven Mercatante
12

petunjuk instalasi di http://lxml.de/installation.html jelaskan:

Untuk mempercepat pembangunan di lingkungan pengujian, misalnya pada server integrasi berkelanjutan, nonaktifkan optimisasi kompiler C dengan mengatur variabel lingkungan CFLAGS:

CFLAGS="-O0" pip install lxml
panchicore
sumber
Bekerja tanpa cacat untukku. +1
João Pereira
11

Tidak ada di atas yang berfungsi untuk saya pada 10.9.2, karena kompilasi menebus kesalahan berikut:

clang: error: unknown argument: '-mno-fused-madd' 

Yang sebenarnya mengarah ke solusi terbersih (lihat detail lebih lanjut di [1]):

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments

pip install lxml

atau mengikuti jika menginstal secara global

sudo pip install lxml

[1] kesalahan dentang: argumen tidak dikenal: '-mno-fused-madd' (kegagalan instalasi paket python)

okigan
sumber
Terima kasih. ini membantu saya. berharap jawaban terkadang dapat berisi meta tentang versi os.
frankV
Jika menginstal global Anda mungkin perlu /etc/sudoersdengan sudo visudomelestarikan variabel lingkungan.
swandog
10
xcode-select --install
sudo easy_install pip
sudo pip install lxml
IngatanNN
sumber
Sangat menarik bahwa beberapa orang perlu sudomenginstal pip sementara yang lain tidak. (Saya memiliki masalah izin ketika menjalankan pip install langsung, dan harus sudo.) Saya hanya bisa berasumsi bahwa saya telah menginstal sesuatu yang berhubungan dengan python sebagai root di masa lalu, yang membuat folder (sistem) tertentu sebagai root alih-alih seperti saya sendiri.
Noach Magedman
Ini bekerja untuk saya, saya baru saja mengatur mac baru untuk bekerja dan meskipun saya menginstal XCode, saya kira itu tidak menginstal alat-alat baris perintah? Bagaimanapun, menjalankan ini, setelah itu menginstal alat dan kemudian jalankan kembali 'pip3.4 install lxml --user' bekerja, tidak ada sudo atau MENGEKSPOR variabel shell apa pun.
mgrandi
Ini bekerja dengan baik pada Yosemite dalam virtualenv. Tapi aku tidak butuh sudo.
nils
@NoachMagedman Saya menginstal ke lingkungan virtual, jadi saya tidak bisa menggunakan sudo. Jika saya menggunakan sudo, itu akan menginstalnya ke dalam paket python global saya, yang saya coba hindari.
Esteban
6

Saya memecahkan masalah ini Yosemitedengan menjalankan perintah berikut:

xcode-select install #this may take several minutes.
pip install lxml
holys
sumber
Saya memiliki cukup banyak homebrew yang menciptakan kekacauan kusut pada sistem lama saya, jadi saya bersumpah untuk tidak menggunakannya dengan pengaturan Yosemite 10.10.2 baru saya. Saya sudah menginstal seluruh paket Xcode, jadi tidak perlu xcode-select installuntuk saya. Saya mengunduh paket libxml2 dan libxlst terbaru (diperlukan untuk lxml), tetapi sebelum menginstalnya saya pikir saya akan memeriksa apakah Yosemite sudah memiliki file-file itu di suatu tempat. Saya membuat env virtual (menggunakan virtualenvwrapper), dan kemudian saya lakukan pip install lxml, dan lxml diinstal bebas kesalahan. Saya menguji lxml dengan mengikis beranda google, dan itu berhasil.
7stud
4

Dengan homebrew, libxml2 disembunyikan untuk tidak mengganggu sistem libxml2, jadi pip harus sedikit dibantu untuk menemukannya.

Dengan bash:

LDFLAGS=-L`brew --prefix libxml2`/lib CPPFLAGS=-I`brew --prefix libxml2`/include/libxml2 pip install --user lxml

Dengan ikan:

env LDFLAGS=-L(brew --prefix libxml2)/lib CPPFLAGS=-I(brew --prefix libxml2)/include/libxml2 pip install --user lxml
Gaëtan Lehmann
sumber
2

OSX 10.9.2

sudo env ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future STATIC_DEPS=true pip install lxml
npiv
sumber
2

Saya mencoba semua jawaban di halaman ini, tidak ada yang bekerja untuk saya. Saya menjalankan OS X Versi 10.9.2

Tapi ini pasti berhasil .... seperti pesona:

ARCHFLAGS = -Wno-error = install-line-argumen-hard-error-in-future pip install lxml

Hexatonis
sumber
1
Ini hanya menonaktifkan galat keras untuk argumen yang tidak digunakan, yang saya temui selama banyak kompilasi pustaka lainnya di OS X Mavericks. Saya merasa bermanfaat untuk menambahkan baris ke profil bash saya, jadi saya tidak perlu mencarinya setiap kali saya menjumpainya: export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"atau Anda dapat menambahkan jenis arsitektur secara eksplisit seperti ini:export ARCHFLAGS="-arch x86_64 -arch i386 -Wno-error=unused-command-line-argument-hard-error-in-future"
Michiel Kauw-A-Tjoe
2

Sayangnya xcode-select --installtidak berfungsi untuk saya karena saya sudah memiliki versi terbaru.

Ini sangat aneh tapi saya menyelesaikan masalah dengan membuka XCode dan menerima Syarat & Ketentuan. Menjalankan pip install lxmlkembali tidak menghasilkan kesalahan setelah.

Adam Sheridan
sumber
1

Setelah berhasil menginstal dari pip (lxml 3.6.4) saya mendapatkan kesalahan ketika mengimpor modul lxml.etree.

Saya mencari tanpa henti untuk menginstal ini sebagai syarat untuk kasar, dan mencoba semua opsi, tetapi akhirnya ini berhasil bagi saya (mac osx 10.11 python 2.7):

$ STATIC_DEPS=true sudo easy_install-2.7 "lxml==2.3.5"

Versi lxml yang lebih lama tampaknya berfungsi dengan modul etree.

Pip sering dapat mengabaikan versi paket yang ditentukan, misalnya ketika Anda memiliki versi yang lebih baru dalam cache pip, dengan demikian easy_install. The '-2.7'pilihan adalah untuk versi python, menghilangkan ini jika Anda menginstal untuk python 3.x.

Ryszard Cetnarski
sumber
1

Dalam kasus saya, saya harus mematikan Kaspersky Antivirus sebelum menginstal lxml dengan:

pip install lxml
Tho
sumber
0

Saya menggunakan OSX 10.9.2 dan saya mendapatkan kesalahan yang sama.

Pemasangan alat baris perintah XCode tidak membantu untuk versi OSX tertentu ini.

Saya pikir pendekatan yang lebih baik untuk memperbaikinya adalah menginstal dengan perintah berikut:

$ CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 pip install lxml

Ini mirip dengan perbaikan jdkoftinoff, tetapi tidak mengubah sistem Anda secara permanen.

valo
sumber
0

Saya bertemu pertanyaan yang sama dan setelah beberapa hari bekerja saya menyelesaikan masalah ini pada OS X 10.9.4 saya, dengan Python 3.4.1.

Inilah solusi saya,

Menurut menginstal lxml dari lxml.de,

Macport of lxml tersedia. Coba sesuatu seperti instal port py25-lxml

Jika Anda tidak memiliki MacPort, instal dari MacPort.org . Cukup mudah. Anda juga mungkin memerlukan kompiler, untuk menginstal alat kompilasi XCode, gunakanxcode-select --install

Pertama saya memperbarui port saya ke versi terbaru melalui sudo port selfupdate,

Maka saya cukup mengetik sudo port install libxml2dan beberapa menit kemudian Anda akan melihat libxml2 berhasil diinstal. Mungkin Anda juga perlu libxsltmenginstal lxml. Untuk menginstal libxslt, gunakan: sudo port install libxslt.

Sekarang, ketik saja pip install lxml, itu akan berfungsi dengan baik.

Pisces
sumber
0

sebelum kompilasi, tambahkan path yang ke xmlversion.h ke lingkungan Anda.

$ set INCLUDE=$INCLUDE:/private/tmp/pip_build_root/lxml/src/lxml/

Tetapi pastikan path yang saya berikan memiliki file xmlversion.h yang terletak di dalam. Kemudian,

$ python setup.py install
knittledan
sumber
0

Setelah banyak merobek rambut dan kertakan gigi, saya menghapus xcode dengan pip dan berlari:

easy_install lxml

Dan semuanya baik-baik saja.

duhaime
sumber
-1

Mencoba:

% STATIC_DEPS=true pip install lxml

Atau:

% STATIC_DEPS=true sudo pip install lxml

Berhasil!

Geek4IT
sumber
Duplikat jawaban Andre.
Kar