"ข้อผิดพลาด: ตัวเลือก - ไม่รู้จักเวอร์ชันเดียว - จัดการภายนอก" ระบุอะไร


102

ดูเหมือนว่าฉันจะเริ่มพบข้อผิดพลาดในerror: option --single-version-externally-managed not recognizedทันทีเมื่อpip installรวมแพ็คเกจรูปแบบต่างๆ (รวมถึงPyObjCและastropy) ฉันไม่เคยเห็นข้อผิดพลาดนี้มาก่อน แต่ตอนนี้ก็ปรากฏขึ้นใน travis-ci builds ซึ่งไม่มีอะไรเปลี่ยนแปลง

ข้อผิดพลาดนี้บ่งชี้ว่ามีการแจกจ่ายที่ล้าสมัยหรือไม่ หรือบางตัวเลือกที่ระบุไม่ถูกต้องในsetup.py? หรืออย่างอื่นทั้งหมด?

คำตอบ:


84

อัพเดทใหม่:

ติดตั้งเวอร์ชันล่าสุดของsetuptools. หากคุณยังคงได้รับข้อผิดพลาดให้ติดตั้งwheelด้วย

pip install -U setuptools
pip install -U wheel

คำตอบเดิม / รายละเอียดเพิ่มเติม:

--single-version-externally-managed เป็นตัวเลือกที่ใช้สำหรับแพ็คเกจ Python ที่สั่งให้โมดูล setuptools สร้างแพ็คเกจ Python ซึ่งสามารถจัดการได้ง่ายโดยตัวจัดการแพ็คเกจของโฮสต์หากจำเป็นเช่น Yum หรือ Apt

หากคุณเห็นข้อความนี้แสดงว่าคุณอาจมี setuptools หรือ Python เวอร์ชันเก่า ลองใช้ Distribute ซึ่งเป็น setuptools เวอร์ชันใหม่กว่าและเข้ากันได้แบบย้อนหลัง แพคเกจเหล่านี้อาจคาดหวังว่าคุณมีแล้ว

https://pypi.python.org/pypi/distribute

แก้ไข: ณ จุดนี้การแจกจ่ายได้รวมเข้ากับsetuptoolsโครงการหลักแล้ว เพียงติดตั้งเวอร์ชันล่าสุดของsetuptools. ตามที่ @wynemo ระบุไว้คุณอาจต้องการใช้--eggตัวเลือกนี้แทนเนื่องจากเหมาะสมกว่าสำหรับผู้ที่ติดตั้งด้วยตนเองซึ่งคุณไม่ได้ตั้งใจจะสร้างแพ็คเกจระบบเพื่อแจกจ่าย


1
คุณสามารถเพิ่มเวอร์ชันที่ปรากฏใน? ฉันใช้ setuptools 0.6 และ pip ​​ไม่รู้เกี่ยวกับเวอร์ชันที่ใหม่กว่า distributeฟังดูเหมือนถูก แต่ฉันไม่สามารถนำเข้าได้ ...
keflavich

import distributeคุณทำไม่ได้ การแจกจ่ายเป็นการแทนที่แบบดรอปอินและมีชื่อโมดูลเดียวกัน import setuptoolsก็จำเป็นเช่นกัน
Kelketek

สิ่งที่ต้องทำคือตรวจสอบให้แน่ใจว่า setuptools ไม่ได้ลบล้างการแจกจ่ายหากคุณติดตั้งทั้งสองอย่าง คุณควรติดตั้งการแจกจ่ายด้วย pip แล้วลบ setuptools ฉันคิดว่าน่าจะได้ผล
Kelketek

17
ควรเพิ่ม: อย่าใช้การแจกจ่ายอีกต่อไป การแจกจ่ายถูกรวมกลับเข้าไปในโปรเจ็กต์ setuptools ดังนั้นตอนนี้จึงมีเพียงหนึ่งเดียวที่setuptoolsจะปกครองพวกเขาทั้งหมด
Iguananaut

1
@johntex คำตอบนี้เกิดขึ้นเมื่อหนึ่งปีที่แล้วเมื่อการแจกจ่ายและ setuptools ยังไม่ได้รวมเข้าด้วยกัน (หรือถ้ามีฉันก็ไม่เคยได้ยิน) ฉันได้อัปเดตแล้ว
Kelketek

136

เพิ่ม--eggตัวเลือก

pip install --egg SCons

ฉันใช้pipเวอร์ชัน 1.4.1


10
นั่นเป็นทางออกเดียวที่ช่วยได้จริง ล่าสุด pip และ setuptools ได้รับการติดตั้งแล้วอย่างไรก็ตามฉันไม่เห็นข้อผิดพลาดนี้
Michael

ฉันมีปัญหากับ pyenv และสิ่งนี้ได้รับการแก้ไขแล้ว
glaucon

13
ใครช่วยอธิบายรายละเอียดว่าตัวเลือกนี้หมายถึงอะไรและทำไมถึงได้ผล
kawing-chiu

4
แม้ว่าสิ่งนี้จะใช้ได้ผลสำหรับฉัน แต่ฉันก็ได้รับข้อผิดพลาด: "DEPRECATION: --egg เลิกใช้งานแล้วและจะถูกลบออกในอนาคตแฟล็กนี้ใช้ร่วมกับ pip ส่วนใหญ่และการใช้จริงจะทำให้ความสามารถของ pip ในการจัดการไม่ถูกต้อง ขั้นตอนการติดตั้ง "
natersoz

2
no such option: --eggใน pip 18.1
gdw2

45

การติดตั้งช่วยwheelแก้ปัญหานี้ด้วยล่าสุดpip(ฉันใช้ 8.1.2):

pip install wheel

คุณสามารถเปลี่ยนกลับเพื่อแก้ไขได้หากต้องการไม่มีปัญหา หากคุณทราบเวอร์ชันที่แน่นอนpipและwheelได้รับการแก้ไขแล้วคุณควรพูดถึงเวอร์ชันนี้เผื่อว่าจะเสียอีกครั้ง และคำตอบก็ไม่ได้อธิบายว่าเกิดอะไรขึ้น
anatoly techtonik

คำตอบพร้อมคำตอบจาก @sparrowt แก้ไขปัญหาของฉัน
David Poxon


5

ฉันมีปัญหานี้ ปรากฎว่ามันเป็นปัญหาเกี่ยวกับสิทธิ์ของไฟล์ใน pip cache ของฉัน

หากคุณเห็นข้อความที่จุดเริ่มต้นของเอาต์พุต pip ของคุณเช่น

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

คุณอาจมีปัญหาเดียวกัน คุณสามารถแก้ไขได้โดยตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ไฟล์ที่เหมาะสมบน pip cache ของคุณ (บางอย่างเช่นchown -R $(whoami) /home/ubuntu/.cache/pip) หรือถ้าคุณใช้ UNIX คุณสามารถตั้งค่าตำแหน่ง pip cache ด้วยXDG_CACHE_HOMEenv var ให้กับบางโฟลเดอร์ที่คุณเป็นเจ้าของ


น่าแปลกที่มันใช้งานได้สำหรับฉันด้วย (ถ้าคุณใช้sudoเพื่อติดตั้งแพ็คเกจอย่าลืมเพิ่ม-Hค่าสถานะ)! ฉันไม่เห็นว่าการเชื่อมต่อระหว่างแคชกับข้อผิดพลาดตัวเลือกคำสั่งคืออะไร แต่ไม่เป็นไร
Delgan

1

ฉันลองวิธีแก้ปัญหาข้างต้นแล้ว อย่างไรก็ตามฉันสามารถแก้ไขปัญหาได้จนกว่าจะดำเนินการดังนี้

sudo pip3 install -U pip (สำหรับ python3)


0

ฉันมีปัญหานี้ใน macbook เมื่อฉันพยายามอัปเกรดแพ็คเกจ python หนึ่งชุด ฉันตรวจสอบเวอร์ชัน pip ใน OS X มันเก่าเกินไป: 1.1 ฉันใช้ follow cmd เพื่ออัพเกรด pip เป็น 1.5.6

easy_install -U pip

จากนั้นข้อผิดพลาดนี้จะได้รับการแก้ไข

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