Mac OS X 10.9'a Lxml yüklenemiyor


234

Lxml'i kurmak istiyorum, böylece Scrapy'yi yükleyebilirim.

Bugün Mac'imi güncellediğimde lxml'i yeniden yüklememe izin vermedi, aşağıdaki hatayı alıyorum:

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

Demlemek için libxml2 ve libxslt'i yüklemeyi denedim, her ikisi de gayet iyi kurulmuş ama hala lxml yükleyemiyorum.

En son yüklediğimde Xcode üzerinde geliştirici araçlarını etkinleştirmem gerekiyordu, ancak Xcode 5'e güncellendiğinden beri bana bu seçeneği vermiyor.

Ne yapmam gerektiğini bilen var mı?


3
Not: Python3 için belirli bir yüklemeyi hedefliyorsanız : pip3.4 install lxmlveya STATIC_DEPS=true pip3.4 install lxmlkomutlarını kullanmanızı öneririm (sürümünüze uyarlayın, bash TAB tamamlama sizin arkadaşınızdır); böylece hedef programınızın bu / bu kütüphaneleri kullanan belirli bir sürümü için yükleyebilirsiniz. Aksi takdirde, yanlış yorumlayıcı için lib'i yüklemek için 30 milyon harcamak kolaydır ;-)
Phil L.

3
Doğru cevabı çözüm olarak işaretlediğinizden emin olun, böylece diğerleri aynı sorunu yaşadıklarında sorunuzu rehber olarak kullanabilir :)
Parker

Yanıtlar:


500

Xcode için komut satırı aracını yüklemeniz veya yükseltmeniz gerekir. Bunu bir terminalde deneyin:

xcode-select --install

24
"Yazılım, şu anda Yazılım Güncelleme sunucusundan kullanılamadığı için yüklenemiyor."
kelorek

7
"Şu anda Yazılım Güncelleme sunucusundan kullanılamadığı için yazılımı yükleyemiyorum" ifadesini aldığınız belirtilmelidir. araçlar zaten kurulu olduğunda.
wombat

Yüklü olup olmadıklarını manuel olarak kontrol etme hakkında birkaç not - stackoverflow.com/a/20834890/255961
studgeek

1
10.10.3 üzerinde iyi çalışıyor. Diğerlerinin neden cflag'ları manipüle etmesi gerektiğinden emin değilim.
Eric Chen

1
Ve El Capitan'a (10.11) geçtikten sonra benim için çalıştı.
asukasz

193

Yosemite'de bu sorunu hem kurarak hem de bağlayarak libxml2ve libxsltdemlemek yoluyla çözdüm:

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

Bu yöntemi kullanarak sorunu çözdüyseniz ancak daha sonra tekrar ortaya çıkarsa, yukarıdaki dört satırdan önce çalıştırmanız gerekebilir :

brew unlink libxml2
brew unlink libxslt

Homebrew ile, özellikle El Capitan'da izin hataları yaşıyorsanız, bu yararlı bir belgedir . Esasen, OS X sürümüne bakılmaksızın, çalıştırmayı deneyin:

sudo chown -R $(whoami):admin /usr/local

24
En faydalı cevap. Xcode-select'un bu kadar çok oy alması inanılmaz. Demlemek kullanıyorsanız, kod seçimini çoktan yaptınız veya xcode'u uzun zaman önce kurdunuz.
Marcos Eliziário Santos

5
@ MarcosEliziárioSantos "install" kelimesi xcode-select --installbiraz yanıltıcı. Mavericks'ten Yosemite'ye xcode-select --installyükselttikten sonra, Yosemite'nin Komut Satırı Araçlarına yükseltmek için tekrar çalıştırmam gerektiğini buldum . (Kısmen) karşılaştığım sorunları çözdü ve her durumda gereksiz olarak çalıştırmak zararsız olurdu.
Noach Magedman

2
San Marcos muhtemelen en iyi yanıt çoğu insan için sorunu çözdü. Bu çözüm bir geçici çözüm olarak çalıştı, ancak birkaç saniye sonra libmemcache ile benzer sorunlarla karşılaştım. Üst yanıt sorunu çözdü. Herkes bu yöntemi ancak önce en iyi cevabı denedikten sonra düşünmelidir.
Rafal Es

@ MarcosEliziárioSantos bir şey daha - demlemek kullanıyorum ama taze bir kurulum oldu (sadece XCode AppStore üzerinden yüklü, hangi homebrew yüklemek için yeterli).
Rafal Es

Ayrıca, Homebrew her zaman izinlerimi mahvediyor. Xcode çözümünü kullandım.
sudo

102

Sorununuzu komut satırında çalıştırarak çözebilirsiniz:

 STATIC_DEPS=true pip install lxml

Kesinlikle bana yardımcı oldu. Dokümanlara ilişkin açıklamalar


Çok teşekkür ederim. Bu bana inanılmaz derecede zaman kazandırdı.
lukecampbell

OSX 10.9.5'te sorunsuz çalışıyor
user9869932

Teşekkürler! MacOS 10.14 üzerinde iyi çalışıyor
jolvera

48

Yukarıdaki çözümlerin çoğunu denedim, ancak hiçbiri benim için çalışmadı. Yosemite 10.10 kullanıyorum, benim için çalışan tek çözüm terminalde bunu yazmaktı:

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: Virtualenv kullanıyorsanız, başlangıçta sudo gerekmez.


1
Bu çözüm Mavericks üzerinde de çalışıyor! Kullanıyorsanız virtualenvsudo gerekmez.
Mauro Baraldi

Benimki OSError: [Errno 1] Operation not permitted: '/usr/bin/build'komutu sudo olarak çalıştırmasına rağmen hala çıktı . Herhangi bir fikir?
PLPeeters

@PLPeeters Hangi python sürümünü ve hangi işletim sistemi sürümünü kullanıyorsunuz?
robinsj

Ben El Capitan beta (yani 10.11) ve bunun için Python 2.7 kullanıyorum. El Capitan ile ilgili bir şey olabileceğini tahmin ediyorum ...
PLPeeters

Sen bir hayat kurtarıcısın. El capitan çalışır, virtualenv'de sudo gerekmez. Teşekkürler!
jacoor

24

Bu bir süredir beni rahatsız ediyor. Python distutils vb hakkında yeterince iç bilmiyorum, ama burada dahil yol yanlış. Python lxml insanlar uygun düzeltme yapabilir kadar beni tutmak için aşağıdaki çirkin kesmek yaptım.

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

19

Global kurulum ... 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

1
Bu benim için çalıştı, ilk önce xcode dev araçlarını güncellemek zorunda kaldı: xcode-select --install
erickthered

Bu hile yaptı. Zaten yüklü xcode komut satırı araçları vardı, ama güncellenmesi gerekiyor gibi görünüyor.
Steven Mercatante


11

Yukarıdakilerin hiçbiri, derleme aşağıdaki hata ile ortadan kalktığı için benim için 10.9.2'de işe yaramadı:

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

Bu aslında en temiz çözüme götürür (daha fazla ayrıntıya bakın [1]):

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

pip install lxml

veya global olarak yüklüyse takip etmek

sudo pip install lxml

[1] clang hatası: bilinmeyen argüman: '-mno-fused-madd' (python paketi yükleme hatası)


Teşekkürler. bu bana yardımcı oldu. İstek cevapları bazen işletim sistemi sürümleri hakkında meta içerebilir.
frankV

Global olarak kuruyorsanız , ortam değişkenlerini korumak için /etc/sudoersbirlikte olmanız gerekebilir sudo visudo.
swandog

10
xcode-select --install
sudo easy_install pip
sudo pip install lxml

Bazılarının sudopip kurulumuna ihtiyaç duyması ilginçtir, diğerleri değil. (Pip kurulumunu doğrudan çalıştırırken izin sorunları yaşadım ve sudo yapmak zorunda kaldım.) Sadece uzak geçmişte kök olarak python ile ilgili bir şey yüklediğimi ve kendim yerine kök olarak belirli (sistem) klasörleri oluşturduğumu varsayabilirim.
Noach Magedman

Bu benim için çalıştı, ben sadece iş için yeni bir mac kurmuştu ve XCode yüklü olsa bile, sanırım komut satırı araçları yüklemedi? Her neyse, bunu çalıştırmak, araçları yüklemek ve daha sonra sadece 'pip3.4 install lxml --user' çalıştı, herhangi bir kabuk değişkeni veya dışa aktarma yok.
mgrandi

Bu sanal bir ortamda Yosemite üzerinde mükemmel çalıştı. sudoGerçi ihtiyacım yoktu .
nils

@NoachMagedman Sanal bir ortama yüklüyorum, bu yüzden sudo kullanamıyorum. Eğer sudo kullansaydım, küresel python paketlerime kurardım, bundan kaçınmaya çalışıyorum.
Esteban

6

YosemiteAşağıdaki komutları çalıştırarak bu sorunu çözdüm:

xcode-select install #this may take several minutes.
pip install lxml

Eski sistemimde karışık şeyler yaratan yeterince homebrew vardı, bu yüzden yeni Yosemite 10.10.2 kurulumumla kullanmama sözü verdim. Tüm Xcode paketini zaten kurdum, bu yüzden xcode-select installbana gerek yok . En son libxml2 ve libxlst paketlerini (lxml için gerekli) indirdim, ancak yüklemeden önce Yosemite'in zaten bu dosyalara sahip olup olmadığını kontrol edeceğimi düşündüm. Bir sanal env (virtualenvwrapper kullanarak) oluşturdum ve sonra yaptım pip install lxmlve lxml hatasız yüklendi. Google'ın ana sayfasını kazıyarak lxml'yi test ettim ve bu iyi çalıştı.
7

4

Homebrew ile libxml2, libxml2 sistemine müdahale etmeyecek şekilde gizlenmiştir, bu yüzden pip'i bulmak için biraz yardımcı olunmalıdır.

Bash ile:

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

Balıkla:

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

2

OSX 10.9.2

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

2

Bu sayfadaki tüm cevapları denedim, hiçbiri benim için çalışmadı. OS X Sürüm 10.9.2 kullanıyorum

Ama bu kesinlikle işe yarıyor .... bir cazibe gibi:

ARCHFLAGS = -Wno-error = kullanılmayan-komut satırı-argüman-gelecekteki zor hata pip install lxml


1
Bu, yalnızca OS X Mavericks'teki diğer birçok kitaplık derlemesi sırasında karşılaştığım kullanılmayan argümanlar için zor hataları devre dışı bırakır. Ben bash profilime çizgi eklemek için yararlı buldum, bu yüzden her karşılaştığımda bakmak zorunda değilim: export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"ya da açıkça böyle mimari türleri ekleyebilirsiniz:export ARCHFLAGS="-arch x86_64 -arch i386 -Wno-error=unused-command-line-argument-hard-error-in-future"
Michiel Kauw-A-Tjoe

2

Maalesef xcode-select --installen son sürüme sahip olduğum için benim için çalışmadı.

Çok garip ama XCode'u açıp Şartlar ve Koşulları kabul ederek sorunu çözdüm. Yeniden çalıştırıldıktan pip install lxmlsonra hata döndürülmedi.


1

Pip (lxml 3.6.4) başarıyla yüklendikten sonra lxml.etree modülünü alırken bir hata alıyordum.

Sonsuz bir şekilde bunu terapi için bir gereklilik olarak kurmak için arıyordum ve tüm seçenekleri denedim, ama sonunda bu benim için çalıştı (mac osx 10.11 python 2.7):

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

Lxml'in eski sürümü etree modülü ile çalışıyor gibi görünüyor.

Pip genellikle bir paketin belirtilen sürümünü göz ardı edebilir, örneğin pip önbelleğinde daha yeni bir sürüme sahip olduğunuzda easy_install. Bu '-2.7'seçenek python sürümü içindir, python 3.x için yüklüyorsanız bunu atlayın.


1

Benim durumumda, lxml yüklemeden önce Kaspersky Antivirus'ü kapatmalıyım :

pip install lxml

0

OSX 10.9.2 kullanıyorum ve aynı hatayı alıyorum.

XCode komut satırı araçlarının yüklenmesi OSX'in bu belirli sürümü için yardımcı olmaz.

Bunu düzeltmek için daha iyi bir yaklaşım, aşağıdaki komutla yüklemek olduğunu düşünüyorum:

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

Bu, jdkoftinoff'un düzeltmesine benzer, ancak sisteminizi kalıcı bir şekilde değiştirmez.


0

Aynı soruyu gördüm ve günlerce çalıştıktan sonra bu sorunu OS X 10.9.4'ümde Python 3.4.1 ile çözdüm.

İşte benim çözümüm,

Lxml.de'den lxml kurulumuna göre ,

Bir lxml macport'u mevcuttur. Port install py25-lxml gibi bir şey deneyin

Eğer MacPort yoksa, yükleyebilirsiniz MacPort.org . Oldukça kolay. XCode derleme araçlarını yüklemek için bir derleyiciye de ihtiyacınız olabilir,xcode-select --install

Öncelikle portumu en son sürüme güncelledim sudo port selfupdate,

Sonra sadece yazıyorum sudo port install libxml2ve birkaç dakika sonra libxml2'nin başarıyla yüklendiğini görmelisiniz. Muhtemelen libxsltlxml yüklemeniz gerekebilir . Libxslt'nin, kullanımını yüklemek için: sudo port install libxslt.

Şimdi, sadece yazın pip install lxml, iyi çalışmalı.


0

derlemeden önce xmlversion.h yolunu ortamınıza ekleyin.

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

Ancak sağladığım yolun içinde xmlversion.h dosyası bulunduğundan emin olun. Sonra,

$ python setup.py install



0

Saçların çok yırtılmasından ve dişlerin yırtılmasından sonra, xcode'u pip ile kaldırdım ve koştum:

easy_install lxml

Ve her şey yolundaydı.


-1

Deneyin:

% STATIC_DEPS=true pip install lxml

Veya:

% STATIC_DEPS=true sudo pip install lxml

İşe yarıyor!


Andre'nin cevabının kopyası.
Kar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.