ไม่สามารถติดตั้ง Lxml บน Mac os x 10.9


234

ฉันต้องการติดตั้ง Lxml ดังนั้นฉันจึงสามารถติดตั้ง Scrapy ได้

เมื่อฉันอัปเดต Mac ของฉันวันนี้จะไม่ให้ฉันติดตั้ง lxml อีกครั้งฉันจะได้รับข้อผิดพลาดต่อไปนี้:

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

ฉันได้ลองใช้ brew เพื่อติดตั้ง libxml2 และ libxslt ทั้งคู่ติดตั้งได้ดี แต่ฉันยังไม่สามารถติดตั้ง lxml ได้

ครั้งล่าสุดที่ฉันติดตั้งฉันต้องเปิดใช้งานเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์บน Xcode แต่เนื่องจากได้รับการอัปเดตเป็น Xcode 5 มันไม่ได้ให้ตัวเลือกแก่ฉันอีกต่อไป

ไม่มีใครรู้ว่าฉันต้องทำอะไร?


3
PS: ฉันขอแนะนำให้ใช้: pip3.4 install lxmlหรือSTATIC_DEPS=true pip3.4 install lxmlคำสั่งหากคุณกำหนดเป้าหมายการติดตั้งเฉพาะสำหรับ Python3 (ปรับให้เข้ากับเวอร์ชันของคุณ, การทุบตี TAB ให้สมบูรณ์คือเพื่อนของคุณ); เพื่อให้คุณติดตั้งสำหรับเวอร์ชันเป้าหมายเฉพาะของโปรแกรมเป้าหมายที่ใช้งาน / libs เหล่านี้ มิฉะนั้นมันเป็นเรื่องง่ายที่จะใช้จ่าย 30 ล้านติดตั้ง lib สำหรับล่ามผิด ;-)
— ฟิลลิตร

3
ให้แน่ใจว่าได้ทำเครื่องหมายตอบที่ถูกต้องเป็นวิธีแก้ปัญหาเพื่อให้ผู้อื่นสามารถใช้คำถามของคุณเป็นคำแนะนำเมื่อพวกเขามีปัญหาเดียวกัน :)
— ปาร์กเกอร์

คำตอบ:


500

คุณควรติดตั้งหรืออัพเกรดเครื่องมือ commandline สำหรับ xcode ลองใช้เทอร์มินัล:

xcode-select --install

24
ฉันได้รับ "ไม่สามารถติดตั้งซอฟต์แวร์ได้เนื่องจากไม่สามารถใช้งานได้จากเซิร์ฟเวอร์ Software Update"
— kelorek

7
เป็นที่น่าสังเกตว่าคุณดูเหมือนจะได้รับ "ไม่สามารถติดตั้งซอฟต์แวร์ได้เนื่องจากไม่สามารถใช้งานได้ในขณะนี้จากเซิร์ฟเวอร์ Software Update" เมื่อติดตั้งเครื่องมือเรียบร้อยแล้ว
— Wombat

หมายเหตุเล็กน้อยเกี่ยวกับวิธีการตรวจสอบด้วยตนเองว่ามีการติดตั้งไว้หรือไม่ - stackoverflow.com/a/20834890/255961
— studgeek

1
ทำงานได้ดีใน 10.10.3 ไม่แน่ใจว่าทำไมคนอื่นถึงต้องจัดการ cflags
— Eric Chen

1
และทำงานให้ฉันหลังจากอัปเกรดเป็น El Capitan (10.11)
— Łukasz

193

ฉันแก้ไขปัญหานี้บน Yosemite โดยทั้งการติดตั้งและเชื่อมโยงlibxml2และlibxsltผ่านการชง:

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

หากคุณแก้ไขปัญหาโดยใช้วิธีนี้ แต่ปรากฏขึ้นอีกครั้งในภายหลังคุณอาจต้องเรียกใช้ก่อนสี่บรรทัดด้านบน:

brew unlink libxml2
brew unlink libxslt

หากคุณกำลังมีข้อผิดพลาดได้รับอนุญาตด้วย Homebrew โดยเฉพาะอย่างยิ่งใน El Capitan, นี้เป็นเอกสารที่เป็นประโยชน์ ในสาระสำคัญโดยไม่คำนึงถึงรุ่น OS X ลองใช้:

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

24
คำตอบที่มีประโยชน์ที่สุด มันเหลือเชื่อวิธีที่ xcode เลือกได้รับคะแนนเสียงมากมาย หากคุณกำลังใช้ชงคุณได้เลือกรหัสหรือติดตั้ง xcode เมื่อนานมาแล้ว
— Marcos Eliziário Santos

5
@ MarcosEliziárioSantosคำว่า "ติดตั้ง" ในxcode-select --installนั้นทำให้เข้าใจผิดเล็กน้อย ฉันพบว่าหลังจากอัปเกรดจาก Mavericks เป็น Yosemite ฉันต้องทำงานxcode-select --installอีกครั้งเพื่ออัปเกรดเป็น Command Line Tools ของ Yosemite (บางส่วน) แก้ไขปัญหาที่ฉันพบและในกรณีใด ๆ ก็ไม่เป็นอันตรายที่จะเรียกใช้ซ้ำซ้อน
— Noach Magedman

2
@ MarcosEliziárioSantosอาจเป็นเพราะคำตอบยอดนิยมแก้ไขปัญหาสำหรับคนส่วนใหญ่ วิธีแก้ปัญหานี้ทำงานเป็นวิธีแก้ปัญหา แต่ฉันพบปัญหาที่คล้ายกันกับ libmemcache ไม่กี่วินาทีต่อมา คำตอบอันดับต้นแก้ไขปัญหาได้ ทุกคนควรพิจารณาวิธีนี้หลังจากลองคำตอบแรกสุดเท่านั้น
— Rafal Es

@ MarcosEliziárioSantosอีกสิ่งหนึ่ง - ฉันใช้ Brew แต่เป็นการติดตั้งใหม่ (ฉันติดตั้ง XCode ผ่าน AppStore ซึ่งเพียงพอที่จะติดตั้ง homebrew)
— Rafal Es

นอกจากนี้ Homebrew จะทำลายสิทธิ์ของฉันเสมอ ฉันใช้โซลูชัน Xcode
— sudo

102

คุณสามารถแก้ปัญหาของคุณโดยใช้สิ่งนี้ใน commandline:

 STATIC_DEPS=true pip install lxml

มันช่วยฉันได้แน่นอน คำอธิบายเกี่ยวกับเอกสาร


ขอบคุณมาก. สิ่งนี้ช่วยให้ฉันประหยัดเวลาได้อย่างไม่น่าเชื่อ
— lukecampbell

ทำงานได้ดีบน OSX 10.9.5
— 9869932

ขอบคุณ! ทำงานได้ดีบน macOS 10.14
— jolvera

48

ฉันลองวิธีแก้ปัญหาส่วนใหญ่ด้านบน แต่ไม่มีวิธีใดที่ทำงานให้ฉันได้ ฉันใช้ Yosemite 10.10, ทางออกเดียวที่ได้ผลสำหรับฉันคือพิมพ์ใน 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

แก้ไข: หากคุณใช้ virtualenv ไม่จำเป็นต้องใช้ sudo ในการเริ่มต้น


1
วิธีนี้ใช้ได้กับ Mavericks ด้วย! หากคุณกำลังใช้งานvirtualenvไม่จำเป็นต้องใช้sudo
— Mauro Baraldi

Mine ยังคงแสดงผลOSError: [Errno 1] Operation not permitted: '/usr/bin/build'แม้จะรันคำสั่งเป็น sudo ความคิดใด ๆ
— PLPeeters

@PLPeeters คุณใช้ python เวอร์ชั่นใดและเวอร์ชั่น OS ใด?
— robinsj

ฉันใช้ El Capitan เบต้า (นั่นคือ 10.11) และใช้ Python 2.7 สำหรับสิ่งนี้ ฉันเดาว่ามันอาจจะมีบางสิ่งบางอย่างจะทำอย่างไรกับ El Capitan ...
— PLPeeters

คุณเป็นผู้ช่วยชีวิต El capitan ทำงานได้ใน virtualenv ไม่จำเป็นต้องใช้ sudo ขอบคุณ!
— jacoor

24

สิ่งนี้รบกวนฉันมาระยะหนึ่งแล้ว ฉันไม่รู้ว่า internals เพียงพอเกี่ยวกับ python distutils ฯลฯ แต่เส้นทาง include ที่นี่ผิด ฉันทำแฮ็คที่น่าเกลียดต่อไปนี้เพื่อจับฉันไว้จนกว่าคน python lxml จะสามารถแก้ไขได้อย่างเหมาะสม

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

กำลังติดตั้งทั่วโลก ... 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
สิ่งนี้ใช้ได้ผลสำหรับฉันต้องอัปเดตเครื่องมือ xcode dev เป็นครั้งแรกโดยใช้: xcode-select
— install

นี่เป็นการหลอกลวง ฉันติดตั้งเครื่องมือบรรทัดคำสั่ง xcode แล้ว แต่ดูเหมือนว่าจำเป็นต้องได้รับการอัปเดต
— Steven Mercatante

12

คำแนะนำการติดตั้งบนhttp://lxml.de/installation.htmlอธิบาย:

หากต้องการเพิ่มความเร็วของการสร้างในสภาพแวดล้อมการทดสอบเช่นบนเซิร์ฟเวอร์การรวมอย่างต่อเนื่องให้ปิดใช้งานการปรับให้เหมาะสมของคอมไพเลอร์ C โดยการตั้งค่าตัวแปรสภาพแวดล้อม CFLAGS:

CFLAGS="-O0" pip install lxml

ทำงานไร้ที่ติสำหรับฉัน +1
— João Pereira

11

ข้อใดข้อหนึ่งข้างต้นไม่ทำงานสำหรับฉันในวันที่ 10.9.2 เนื่องจากการรวบรวมมีข้อผิดพลาดดังต่อไปนี้:

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

ซึ่งนำไปสู่การแก้ปัญหาที่สะอาดที่สุด (ดูรายละเอียดเพิ่มเติมใน [1]):

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

pip install lxml

หรือต่อไปนี้หากติดตั้งทั่วโลก

sudo pip install lxml

[1] ข้อผิดพลาดเสียงดังกราว: อาร์กิวเมนต์ที่ไม่รู้จัก: '-mno-fused-madd' (การติดตั้งแพ็กเกจหลามล้มเหลว)


ขอบคุณ สิ่งนี้ช่วยฉัน บางครั้งคำตอบที่ต้องการอาจมีเมตาเกี่ยวกับเวอร์ชันของระบบปฏิบัติการ
— frankV

หากติดตั้งทั่วโลกคุณอาจต้อง/etc/sudoersใช้sudo visudoเพื่อรักษาตัวแปรสภาพแวดล้อม
— swandog

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

เป็นที่น่าสนใจที่บางคนต้องการsudoการติดตั้ง pip ในขณะที่คนอื่นไม่ได้ (ฉันมีปัญหาสิทธิ์เมื่อรันการติดตั้ง pip โดยตรงและต้องใช้ sudo) ฉันสามารถสันนิษฐานได้ว่าฉันได้ติดตั้งบางสิ่งที่เกี่ยวข้องกับหลามในฐานะรูทในอดีตอันไกลโพ้นซึ่งสร้างโฟลเดอร์ (ระบบ) บางโฟลเดอร์เป็นรูทแทนที่จะเป็นตัวฉันเอง
— Noach Magedman

สิ่งนี้ใช้ได้กับฉันฉันเพิ่งตั้งค่าแม็คใหม่สำหรับการทำงานและแม้ว่าฉันจะติดตั้ง XCode แต่ฉันคิดว่ามันไม่ได้ติดตั้งเครื่องมือบรรทัดคำสั่งใช่ไหม ยังไงก็ตาม, เรียกใช้มัน, โดยให้มันติดตั้งเครื่องมือและจากนั้นแค่ทำการติดตั้ง 'pip3.4 install lxml --user' ใหม่, ไม่มี sudo หรือส่งออกตัวแปรเชลล์ใด ๆ
— mgrandi

สิ่งนี้ทำงานได้อย่างสมบูรณ์บน Yosemite ใน virtualenv ฉันไม่จำเป็นต้องsudoแม้ว่า
— nils

@NoachMagedman ฉันกำลังติดตั้งในสภาพแวดล้อมเสมือนจริงดังนั้นฉันไม่สามารถใช้ sudo ได้ ถ้าฉันใช้ sudo มันจะติดตั้งลงในแพ็กเกจหลามส่วนกลางซึ่งเป็นสิ่งที่ฉันพยายามหลีกเลี่ยง
— Esteban

6

ฉันแก้ไขปัญหานี้ได้Yosemiteโดยการรันคำสั่งต่อไปนี้:

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

ฉันมี homebrew มากพอที่จะสร้างสิ่งที่ยุ่งเหยิงบนระบบเก่าของฉันดังนั้นฉันสาบานว่าจะไม่ใช้มันกับการตั้งค่า Yosemite 10.10.2 ใหม่ของฉัน ฉันได้ติดตั้งแพ็คเกจ Xcode ทั้งหมดแล้วดังนั้นไม่จำเป็นต้องทำxcode-select installสำหรับฉัน ฉันดาวน์โหลดแพคเกจ libxml2 และ libxlst ล่าสุด (จำเป็นสำหรับ lxml) แต่ก่อนที่จะทำการติดตั้งฉันคิดว่าฉันจะตรวจสอบว่า Yosemite มีไฟล์เหล่านั้นอยู่บ้างไหม ฉันสร้าง env เสมือน (โดยใช้ virtualenvwrapper) จากนั้นฉันก็ทำpip install lxmlและข้อผิดพลาดในการติดตั้ง lxml ฟรี ฉันทดสอบ lxml ด้วยการขูดหน้าแรกของ google และทำงานได้ดี
— 7stud

4

ด้วย homebrew, libxml2 ถูกซ่อนไว้เพื่อไม่รบกวนการทำงานของระบบ libxml2, ดังนั้น pip จะต้องได้รับการช่วยเหลือเล็กน้อยเพื่อที่จะหามัน

ด้วยทุบตี:

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

กับปลา:

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


2

ฉันลองคำตอบทั้งหมดในหน้านี้ไม่มีคำตอบใดที่เหมาะกับฉัน ฉันใช้ OS X เวอร์ชั่น 10.9.2

แต่มันใช้งานได้ดีอย่างแน่นอนเช่นเสน่ห์:

ARCHFLAGS = -Wno-error = ไม่ได้ใช้งานคำสั่งบรรทัดข้อโต้แย้งยากข้อผิดพลาดในอนาคต pip ติดตั้ง lxml


1
นี่เป็นการปิดการใช้งานข้อผิดพลาดอย่างหนักสำหรับอาร์กิวเมนต์ที่ไม่ได้ใช้ซึ่งฉันได้พบระหว่างการรวบรวมไลบรารีอื่น ๆ บน OS X Mavericks ฉันพบว่ามีประโยชน์ในการเพิ่มบรรทัดลงในโปรไฟล์ทุบตีของฉันดังนั้นฉันไม่ต้องค้นหาทุกครั้งที่พบ: export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"หรือคุณสามารถเพิ่มประเภทสถาปัตยกรรมอย่างชัดเจนเช่นนี้:export ARCHFLAGS="-arch x86_64 -arch i386 -Wno-error=unused-command-line-argument-hard-error-in-future"
— Michiel Kauw-A-Tjoe

2

น่าเสียดายที่ใช้xcode-select --installไม่ได้กับฉันเพราะฉันมีเวอร์ชั่นล่าสุดแล้ว

มันแปลกมาก แต่ฉันแก้ปัญหาด้วยการเปิด XCode และยอมรับข้อกำหนดและเงื่อนไข การเรียกใช้ซ้ำpip install lxmlไม่มีข้อผิดพลาดหลังจากนั้น


1

หลังจากติดตั้งสำเร็จจาก pip (lxml 3.6.4) ฉันได้รับข้อผิดพลาดเมื่อนำเข้าโมดูล lxml.etree

ฉันค้นหาไม่สิ้นสุดเพื่อติดตั้งสิ่งนี้เป็นสิ่งจำเป็นสำหรับ scrapy และลองใช้ตัวเลือกทั้งหมด แต่ในที่สุดมันก็ใช้งานได้สำหรับฉัน (mac osx 10.11 python 2.7):

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

รุ่นเก่ากว่าของ lxml ดูเหมือนจะทำงานกับโมดูล etree

Pip มักจะไม่สนใจรุ่นที่ระบุของแพคเกจเช่นเมื่อคุณมีรุ่นใหม่ในแคช pip easy_installที่ทำให้ '-2.7'ตัวเลือกสำหรับรุ่นหลามละเว้นนี้ถ้าคุณกำลังติดตั้งสำหรับหลาม 3.x.



0

ฉันใช้ OSX 10.9.2 และฉันได้รับข้อผิดพลาดเดียวกัน

การติดตั้งเครื่องมือบรรทัดคำสั่ง XCode ไม่ได้ช่วยสำหรับ OSX รุ่นนี้โดยเฉพาะ

ฉันคิดว่าวิธีที่ดีกว่าในการแก้ไขปัญหานี้คือการติดตั้งด้วยคำสั่งต่อไปนี้:

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

สิ่งนี้คล้ายกับการแก้ไข jdkoftinoff 'แต่จะไม่เปลี่ยนแปลงระบบของคุณอย่างถาวร


0

ฉันพบคำถามเดียวกันและหลังจากวันทำงานฉันแก้ไขปัญหานี้ใน OS X 10.9.4 ของฉันด้วย Python 3.4.1

นี่คือทางออกของฉัน

ตามการติดตั้ง lxmlจาก lxml.de

มี macport ของ lxml ให้บริการ ลองใช้พอร์ตการติดตั้ง py25-lxml

หากคุณไม่ได้มี MacPort ติดตั้งได้จากMacPort.org มันค่อนข้างง่าย คุณอาจต้องใช้คอมไพเลอร์เพื่อติดตั้งเครื่องมือในการรวบรวม XCode ให้ใช้xcode-select --install

ประการแรกฉันปรับปรุงพอร์ตของฉันให้เป็นเวอร์ชั่นล่าสุดผ่านทางsudo port selfupdate,

จากนั้นฉันก็พิมพ์sudo port install libxml2และหลายนาทีหลังจากนั้นคุณจะเห็น libxml2 ติดตั้งเรียบร้อยแล้ว อาจเป็นไปได้ว่าคุณอาจต้องlibxsltติดตั้ง lxml ในการติดตั้ง libxslt ให้ใช้: sudo port install libxslt.

ตอนนี้เพียงแค่พิมพ์pip install lxmlก็ควรจะทำงานได้ดี


0

ก่อนที่จะรวบรวมเพิ่มเส้นทางที่ xmlversion.h ในสภาพแวดล้อมของคุณ

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

แต่ให้แน่ใจว่าเส้นทางที่ฉันให้มามีไฟล์ xmlversion.h อยู่ด้านใน จากนั้น

$ python setup.py install



0

หลังจากผมและฟันฉีกขาดมากผมถอนการติดตั้ง xcode ด้วย pip และวิ่ง:

easy_install lxml

และทุกอย่างเป็นไปด้วยดี


-1

ลอง:

% STATIC_DEPS=true pip install lxml

หรือ:

% STATIC_DEPS=true sudo pip install lxml

มันได้ผล!


คำตอบของ Andre ซ้ำกัน
— Kar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.