pip ไม่ทำงานกับการติดตั้ง hombrew python 2.7


15

ฉันได้ติดตั้งไพ ธ อนโดยใช้ homebrew และฉันไม่สามารถเรียกใช้ pip จาก bash ได้ ฉันได้ลองแก้ไข. bash_profile ของฉันเพื่อรวม / usr / local / bin / python และ / usr local / share / python เพื่อไม่ให้เกิดประโยชน์

เมื่อฉันใช้คำสั่ง bash:

find / -name 'pip'

ผลลัพธ์เดียวที่ฉันได้รับคือ:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

ไม่มีสิ่งใดที่ปฏิบัติการได้

ฉันไม่ทราบว่าจะชี้ $ PATH ของฉันไปที่ใดเพราะฉันไม่สามารถหาจุดปฏิบัติการได้ เมื่อฉันเปิด

/usr/local/lib/python2.7/site-packages/pip

หรือ

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

ฉันค้นหาไฟล์ต่อไปนี้:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

ไม่มีสิ่งใดที่ปฏิบัติการได้

ฉันขอขอบคุณความช่วยเหลือของทุกคนที่มีประสบการณ์มากกว่าฉัน

แก้ไข: ฉันลองขั้นตอนที่แนะนำโดย Marco:

นี่คือผลลัพธ์ของขั้นตอน:

  1. echo $ PATH แสดงไดเรกทอรีต่าง ๆ : / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / MySQL / bin

  2. ซึ่ง -a python คืนค่า: / usr / local / bin / python / usr / local / bin / python

ไม่มีอะไรส่งคืนซึ่ง -a pip

  1. ไพ ธ อนใดส่งคืน: / usr / local / bin / python

ไม่มีอะไรถูกส่งกลับสำหรับ pip

  1. ls -l $ (ไพ ธ อน) ส่งคืนไดเรกทอรีเดียว: lrwxr-xr-x 1 Ivan ผู้ดูแลระบบ 33 17 พฤษภาคม 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ หลาม

ls -l $ (pip ไหน) ส่งคืนค่าจำนวนมากรวมถึงไฟล์ไพ ธ อนที่ฉันแสดงในโพสต์ดั้งเดิมของฉัน

คำตอบ:


19

โดยทั่วไปhomebrewจะติดตั้งformulaเข้าไปแล้ววางลิงค์ที่/usr/local/Cellar/formula/usr/local/bin/formula

เพื่อให้การใช้สูตรการติดตั้งให้แน่ใจว่าอยู่ในของคุณ/usr/local/bin $PATHแสดงของคุณ$PATHโดยการพิมพ์

echo $PATH

หาก/usr/local/binไม่ได้อยู่ในของคุณ$PATHให้วางบรรทัดนี้ไว้ท้าย~/.profileไฟล์ของคุณ

export PATH="/usr/local/bin:$PATH"

ตอนนี้ตรวจสอบสิ่งที่pythonsพบใน OSX ของคุณโดยพิมพ์:

which -a python

ควรมีหนึ่งไพ ธ อนที่/usr/bin/(แอปเปิ้ลไพ ธ อน) และอีก/usr/local/bin/อันคือโฮมบรู ธ ไพ ธ อน

which python

จะแสดงให้คุณซึ่งหลามพบครั้งแรกในของคุณและจะดำเนินการเมื่อคุณเรียก$PATH python

หากคุณต้องการทราบว่าไฟล์ปฏิบัติการอยู่ที่ไหนให้แสดงด้วยการพิมพ์

ls -l $(which python)

สิ่งนี้อาจมีลักษณะเช่นนี้: รูตล้อ lrwxr-xr-x 1 7 68 13:11 python -> / usr / local / bin / python

สิ่งนี้จะได้ผลpipเช่นกัน

หากคุณแสดงผลลัพธ์ของขั้นตอนนี้เราอาจช่วยคุณได้ง่ายขึ้น

- อัปเดต -

คุณได้เชื่อมโยงกับ/usr/local/bin/python /usr/local/Cellar/python/2.7.9/bin/python-> brew install pythonทำงาน

แสดงถ้าpipติดตั้งโดยการพิมพ์

brew list python | grep pip

คุณควรเห็น

/usr/local/Cellar/python/2.7.9/bin/pip

brew installถ้าไม่ได้ตรวจสอบหากมีการเชื่อมโยงที่ไม่ได้ทำด้วย บอกคุณบางอย่างเช่นนี้:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

หากต้องการบังคับให้ลิงก์และเขียนทับไฟล์ที่ขัดแย้งทั้งหมด:

brew link --overwrite python

หากต้องการแสดงรายการไฟล์ทั้งหมดที่จะถูกลบ:

brew link --overwrite --dry-run python

** ไม่มีแอปเปิ้ลมาตรฐาน/usr/bin/python**

ลิงก์จาก/usr/local/Cellar/python/2.7.9/bin/pythonไปยัง/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

#!/usr/bin/pythonนี้เป็นสิ่งจำเป็นสำหรับทุกสคริปต์หลามเริ่มต้นด้วย โดยเฉพาะอย่างยิ่งeasy_installจะล้มเหลวหากไม่มีการเชื่อมโยง

ตอนนี้คุณสามารถเรียกใช้

easy_install pip

หวังว่าคุณจะก้าวหน้า


มาร์โกขอบคุณสำหรับคำตอบของคุณ! โปรดดูคำถามเดิมของฉันสำหรับผลลัพธ์ในขั้นตอน - ฉันได้เพิ่มพวกเขาใน
YoungPadawan

@YoungPadawan /usr/bin/pythonดูเหมือนว่าคุณไม่ได้มีมาตรฐานแอปเปิ้ล #!/usr/bin/pythonนี้ไม่ดีเพราะสคริปต์หลามหลายเริ่มต้นด้วย หากไม่มีไพ ธ อนคุณจะได้รับข้อความแสดงข้อผิดพลาดเช่นเดียวกับคุณ ใช้ในการตรวจสอบสิ่งที่จะเปลี่ยนการเชื่อมโยงของคุณเมื่อใช้brew link --dry-run python brew link --overwrite pythonเราจะให้ pip ของคุณทำงาน ;-)
Marco M. von Hagen

ใช้brew link --overwrite --dry-run pythonเพื่อดูไฟล์ที่จะถูกเขียนทับ
Marco M. von Hagen

1
ฉันทำเครื่องหมายที่คำตอบของคุณเพราะมันนำฉันไปสู่เส้นทางที่ถูกต้อง แต่ในที่สุดมันก็เป็นปัญหาเรื่องการอนุญาต หลังจากติดตั้งแล้วฉันได้Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the รับคำสั่งให้ติดตั้งpostython python ทำให้ฉันมีไฟล์บางไฟล์ที่ฉันไม่สามารถเข้าถึงได้ ตอนนี้ฉันสามารถใช้ pip! ขอขอบคุณอีกครั้ง
YoungPadawan

1
ในกรณีของปัญหาที่เกิดขึ้นเนื่องจากการThe post-install step did not complete successfully error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission deniedการลบไฟล์นั้นด้วยตนเองแล้วเรียกใช้brew postinstall pythonอีกครั้งจะแก้ไข
David Pursehouse

5

หาก Brew กำลังจัดการการติดตั้งไพ ธ อนและ pip ​​จะไม่เชื่อมโยงกันอีกต่อไป (เช่นคุณพิมพ์ "pip ใด" และไม่ได้ผลลัพธ์) ลองใช้สิ่งนี้จากโฮมไดเร็กตอรี่ของคุณ:

brew unlink python && brew link python

ไม่แน่ใจว่าวิธีการเดิมใช้งานได้อีกหรือไม่

ตอนนี้ยืนยันว่ามันชี้ไปที่การติดตั้ง 2.7 ของคุณด้วยpip --version(มันจะแสดงรายการเวอร์ชันหลักของหลามในไดเรกทอรีออก)


4

ไม่ใช่คำตอบสำหรับคำถามดั้งเดิม แต่ถ้าใครมาที่นี่เพราะ Homebrew ที่ติดตั้งpython/pipแล้วไม่ทำงานอีกต่อไป (เช่นpythonชี้ไปที่ระบบ python และpipไม่พบ) เหตุผลอาจเปลี่ยนไป (ฤดูร้อนปี 2017) ล่าสุด วิธีการติดตั้ง Homebrew และลิงค์ของ Python

วิธีแก้ไขคือเพิ่มสิ่งต่อไปนี้ลงใน~/.bash_profileและ / หรือ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

สิ่งนี้จะทำให้pythonชี้ไปที่เวอร์ชันการต้มของงูหลามและให้คุณpipด้วย ดูส่วนคำเตือนใต้brew info pythonและhttps://github.com/Homebrew/homebrew-core/issues/15746สำหรับข้อมูลเพิ่มเติม


2

โดยค่าเริ่มต้นให้ Homebrew pip brew install pythonผ่าน: อย่างไรก็ตามคุณจะมี Pythons สองตัวติดตั้งบน Mac ของคุณหรือคุณสามารถติดตั้งผ่านทาง:

sudo easy_install pip

หากต้องการตรวจสอบว่ามีไฟล์ใดติดตั้งอยู่กับแพ็คเกจ Python ของคุณลอง:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

pipซึ่งควรประกอบด้วย

หลังจากการติดตั้งคุณควรเชื่อมโยงไฟล์ที่ติดตั้งสูตรของคุณโดย:

brew link python

ซึ่งควรสร้างลิงก์สัญลักษณ์ที่ถูกต้อง (เช่น/usr/local/bin/pipชี้ไปที่ของคุณCellar/python/2.?.?/bin/pip)

หากคุณได้รับอนุญาตคุณสามารถแก้ไขได้โดย:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

และตรวจสอบให้แน่ใจว่าผู้ใช้ของคุณอยู่ในกลุ่มผู้ดูแลระบบ ( id -Gn $USER)

หลังจากแก้ไขการอนุญาตห้ามใช้sudoเมื่อใช้brewคำสั่ง

จากนั้นลิงก์อีกครั้ง:

brew unlink python && brew link python

หากต้องการทดสอบ dry-run ให้ยกเลิกการเชื่อมโยงและเรียกใช้: brew link -n pythonเพื่อดูลิงก์ของไฟล์ที่brewจะลิงก์

หลังจากเชื่อมโยงสำเร็จให้ตรวจสอบให้แน่ใจว่าตัวแปรระบบ PATH ของคุณมี/usr/localถ้าไม่เพิ่ม:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

ไปยัง~/.bashrcไฟล์ของคุณ

หากประสบความสำเร็จคุณpipควรทำงานทันที


ขอบคุณสำหรับคำตอบของคุณ kenorb! ส่วนหนึ่งของปัญหาคือ easy_install ไม่ทำงานสำหรับฉันเช่นกัน ในทุบตีฉันได้รับ: -bash: / usr / bin / easy_install: / usr / bin / python: ล่ามที่ไม่ดี: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
YoungPadawan

นั่นหมายความว่าคุณไม่ได้/usr/bin/pythonติดตั้ง (ซึ่งโดยปกติควรมีให้กับ OS X) ดังนั้นโปรดลองตามที่แนะนำซึ่งเป็น: brew install python && brew link pythonแล้วเพิ่มที่คุณ/usr/local/bin PATH
kenorb

ผมไม่คิดว่ามีการวางหลามในbrew install python && brew link python /usr/binฉันเห็นมันusr/local/binแต่ฉันไม่เห็น symlink ที่จะไปที่นั่น ฉันได้ยกเลิกการเชื่อมโยงและเชื่อมโยงไพ ธ อนแล้วและไม่มีอะไรเปลี่ยนแปลง ดูเหมือนว่าการติดตั้งและการเชื่อมโยงชงไม่ได้วางสิ่งที่ควร
YoungPadawan

@YoungPadawan brewไม่ได้ทำอะไรที่มีแต่/usr/bin /usr/local/binลอง: brew unlink pythonและเรียกใช้แบบแห้ง: brew link -n pythonเพื่อแสดงรายการไฟล์ทั้งหมดที่ควรเชื่อมโยงและตรวจสอบว่าpipมีหรือไม่ -nถ้าใช่ทำงานอีกครั้งโดยไม่ต้อง
kenorb

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