“ OSError: [Errno 1] ไม่อนุญาตให้ใช้งาน” เมื่อติดตั้ง Scrapy ใน OSX 10.11 (El Capitan) (การป้องกันความสมบูรณ์ของระบบ)


206

ฉันพยายามติดตั้ง Scrapy Python framework ใน OSX 10.11 (El Capitan) ผ่านทาง pip สคริปต์การติดตั้งจะดาวน์โหลดโมดูลที่จำเป็นและในบางจุดจะส่งคืนข้อผิดพลาดต่อไปนี้:

OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

ฉันพยายามปิดใช้งานคุณสมบัติรูตใน OSX 10.11 ด้วยคำสั่ง:

sudo nvram boot-args="rootless=0";sudo reboot

แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกันเมื่อรีบูตเครื่อง

เบาะแสหรือแนวคิดใด ๆ จาก StackExchangers เพื่อนของฉัน

หากช่วยได้เอาต์พุตสคริปต์แบบเต็มจะเป็นดังต่อไปนี้:

sudo -s pip install scrapy
Collecting scrapy
  Downloading Scrapy-1.0.2-py2-none-any.whl (290kB)
    100% |████████████████████████████████| 290kB 345kB/s 
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scrapy)
Collecting w3lib>=1.8.0 (from scrapy)
  Downloading w3lib-1.12.0-py2.py3-none-any.whl
Collecting lxml (from scrapy)
  Downloading lxml-3.4.4.tar.gz (3.5MB)
    100% |████████████████████████████████| 3.5MB 112kB/s 
Collecting Twisted>=10.0.0 (from scrapy)
  Downloading Twisted-15.3.0.tar.bz2 (4.4MB)
    100% |████████████████████████████████| 4.4MB 94kB/s 
Collecting six>=1.5.2 (from scrapy)
  Downloading six-1.9.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from Twisted>=10.0.0->scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from zope.interface>=3.6.0->Twisted>=10.0.0->scrapy)
Installing collected packages: six, w3lib, lxml, Twisted, scrapy
  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/basecommand.py", line 223, in main
status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/commands/install.py", line 299, in run
root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_install.py", line 726, in uninstall
paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/utils/__init__.py", line 314, in renames
shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

ซ้ำซ้อนที่เป็นไปได้ของUnable to install nltk บน Mac OS El Capitan
hectorpal

คำถามกำลังถูกกล่าวถึงที่นี่: apple.stackexchange.com/questions/209572/…
hectorpal

บางทีคุณอาจช่วยคุณได้โดยไม่ต้องปิดการใช้งาน SIP: stackoverflow.com/a/32930419/3090526
nvg58

5
ฉันมีปัญหาเดียวกันที่แน่นอนเมื่อฉันพยายามติดตั้ง "virtualenvwrapper" โดยใช้ pip แต่คำสั่งนี้ใช้ได้กับฉัน: "sudo pip install - - ติดตั้ง virtualenvwrapper - น่ากลัว" ดังนั้นมันอาจใช้กับกรณีของคุณได้โดยไม่ต้องเจ็บปวด round-about
Arabasta

คำตอบ:


153

ฉันคิดว่ามันไม่จำเป็นอย่างยิ่งที่จะต้องเริ่มแฮ็ค OS X

ฉันสามารถแก้ไขมันได้

brew install python

ดูเหมือนว่าการใช้ python / pip ที่มาพร้อมกับ El Capitan ใหม่มีปัญหาบางอย่าง


2
ทำงานให้ฉันด้วยและรับ Python 2.7.X ตัวต่อไป คำตอบนี้ควรชนะ
Russell_A

3
นี่คือคำตอบที่ดีที่สุดสำหรับผู้ใช้ El Capitan Mac
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

คุณได้ชี้ให้เห็นอย่างถูกต้อง! คำตอบนี้ควรได้รับการยอมรับ!
Muaaz salagar

ที่ทำเพื่อฉัน (เซียร์ 10.13.6)
Michael Guild

@Codersofthedark อาจbrew install python3จะแก้ปัญหานี้ได้เพราะในระบบที่ใหม่กว่า python3 ตอนนี้เป็น python เริ่มต้น
Mario

399
pip install --ignore-installed six

จะทำเคล็ดลับ

ที่มา: github.com/pypa/pip/issues/3165


51
สิ่งนี้ทำงานได้ดีสำหรับฉันเมื่อติดตั้ง awscli บน El Capitan โดยไม่ต้องยุ่งกับการติดตั้งหลาม:sudo pip install --ignore-installed awscli
ลุค

3
ไม่สามารถนำเข้าสิ่งสกปรกเมื่อติดตั้งด้วยวิธีนี้ImportError: cannot import name xmlrpc_client
harinsa

3
--ignore-installedเคล็ดลับสำหรับการทำ AWS Elastic Beanstalk Cli ให้ฉันเช่นกัน ในที่สุด ...
John the King

1
มันใช้ได้ดีสำหรับฉันเช่นกัน ฉันคิดว่านี่ควรเป็นคำตอบที่ถูกต้อง
Paul Carlton

1
sudo pip install --ignore-installed scrapyนี้ทำงานสำหรับฉันใน
โซเฟียเฟิง

89

ดังที่คำตอบอื่น ๆ กล่าวว่าเป็นเพราะการป้องกันความสมบูรณ์ของระบบใหม่ แต่ฉันเชื่อว่าคำตอบอื่น ๆ นั้นซับซ้อนเกินไป

หากคุณจะใช้แพ็คเกจนั้นในผู้ใช้ปัจจุบันคุณควรติดตั้งได้โดยไม่ต้องปิดการใช้งาน SIP โดยใช้--userแฟล็ก แบบนี้:

sudo pip install --user packagename

2
ฉันไม่ชัดเจนเกี่ยวกับวิธีการตั้งค่าสถานะที่แตกต่างกันเหล่านี้ แต่คำตอบนี้ดูเหมือนจะเหมาะสมที่สุดสำหรับฉัน (นอกจากนี้ยังใช้งานได้)
xdhmoore

@xdhmoore ขอบคุณฉันคิดเหมือนกันฮ่าฮ่า ไม่จำเป็นต้องปิดการใช้งาน SIP หรือติดตั้งหลามใหม่หรือยุ่งกับการพึ่งพา
dietbacon

สำหรับ mkvirtualenv สิ่งนี้ไม่ได้ติดตั้งแพ็กเกจในตำแหน่ง / usr / local / bin ที่คาดไว้ แต่sudo pip install mkvirtualenv --ignore-installed sixทำงานได้ตามที่คาดไว้โดยใส่ virtualenvwrapper.sh ไว้ใน / usr / local / bin
Rob

@Rob มันไม่ได้จริงๆ แฟล็ก --user ติดตั้งสำหรับผู้ใช้ปัจจุบันเท่านั้นดังนั้นจึงเหมาะสมที่จะไม่ติดตั้งในโฟลเดอร์ที่ไม่เฉพาะเจาะจงสำหรับผู้ใช้ สำหรับฉันคำสั่งนี้ติดตั้งแพ็กเกจของฉันใน "/Users/myusername/Library/Python/2.7/lib/python/site-packag‌ es" สำหรับไฟล์. py และ "/Users/myusername/Library/Python/2.7/bin" สำหรับ. sh files
dietbacon

1
สิ่งนี้ใช้ได้สำหรับฉันสำหรับ rasa-nlu sudo pip install --user rasa_nlu
nantitv

40

คำตอบที่โหวตอย่างสูงไม่ได้ผลสำหรับฉันดูเหมือนว่าจะเหมาะสำหรับผู้ใช้ El Capitan แต่สำหรับผู้ใช้ MacOS Sierra ลองทำตามขั้นตอนต่อไปนี้

  1. brew install python
  2. sudo pip install --user <package name>

sudo pip install --user <package name>ทำงานให้ฉันโดยไม่จำเป็นต้องติดตั้งไพ
ธ อน

23

คำเตือน

ฉันขอแนะนำอย่างยิ่งกับการปรับเปลี่ยนระบบ Python บน Mac มีปัญหามากมายที่สามารถเกิดขึ้นได้

ข้อผิดพลาดเฉพาะของคุณแสดงว่าตัวติดตั้งมีปัญหาในการแก้ไขการอ้างอิงสำหรับ Scrapy โดยไม่ส่งผลกระทบต่อการติดตั้ง Python ปัจจุบัน ระบบใช้ Python สำหรับงานสำคัญจำนวนหนึ่งดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องทำให้การติดตั้งระบบมีเสถียรภาพและติดตั้งโดย Apple

ฉันก็จะหมดความเป็นไปได้อื่น ๆ ทั้งหมดก่อนที่จะผ่านการรักษาความปลอดภัย

โซลูชั่นผู้จัดการแพคเกจ:

โปรดตรวจสอบเครื่องมือการจำลองเสมือน Python เช่นvirtualenvก่อน สิ่งนี้จะช่วยให้คุณทดสอบได้อย่างปลอดภัย

อีกหนึ่งเครื่องมือที่มีประโยชน์ในการใช้ภาษาและซอฟต์แวร์โดยไม่ขัดแย้งกับระบบปฏิบัติการ Mac OS ของคุณเป็นHomebrew เช่นเดียวกับMacPortsหรือตำรวจ , Homebrew เป็นผู้จัดการแพคเกจสำหรับ Macและเป็นประโยชน์สำหรับการได้อย่างปลอดภัยจำนวนมากพยายามที่ภาษาอื่น ๆ และเครื่องมือ

"ติดตั้งซอฟต์แวร์ของคุณเอง":

ถ้าคุณไม่ชอบวิธีการจัดการแพคเกจที่คุณสามารถใช้/usr/localเส้นทางหรือสร้างไดเรกทอรีสำหรับการติดตั้งการติดตั้งหลามอื่นและแก้ไขเส้นทางของคุณในของคุณ/opt/local .bashrcโปรดทราบว่าคุณจะต้องเปิดใช้งานรูทสำหรับโซลูชันเหล่านี้

ทำอย่างไรต่อไป:

ถ้าคุณอย่างต้องปิดใช้งานการตรวจสอบการรักษาความปลอดภัย (และฉันหวังว่าจะเป็นสิ่งอื่นที่ไม่ใช่ล้อเล่นกับภาษาของระบบและทรัพยากร) คุณสามารถปิดการใช้งานชั่วคราวและเปิดใช้งานได้โดยใช้บางส่วนของเทคนิคในการโพสต์นี้เกี่ยวกับวิธีการปิดการใช้งานระบบ ความสมบูรณ์ของการป้องกัน


2
มันเป็นการลงทุนที่รวดเร็วและต้องใช้ความสามารถบรรทัดคำสั่ง แต่ผลลัพธ์ก็คุ้มค่า - ฉันใช้สภาพแวดล้อมเสมือนที่คล้ายกันสำหรับ Ruby (RVM), Perl และอื่น ๆ Homebrew มีประโยชน์สำหรับการลองใช้ภาษาและเครื่องมืออื่น ๆ อย่างปลอดภัย เช่นกัน
rholmes

16

นี้ได้เคล็ดลับสำหรับฉัน:

   sudo pip install scrapy --ignore-installed six

ใช่มันใช้งานได้sudo pip install virtualenvwrapper --ignore-installed sixดีเช่นกันหลีกเลี่ยงข้อผิดพลาดนี้:OSError: [Errno 1] Operation not permitted: '/tmp/..../System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
Rob

12

คุณควรปิดการใช้งาน "System Integrity Protection" ซึ่งเป็นคุณสมบัติใหม่ใน El Capitan

ขั้นแรกคุณควรรันคำสั่งสำหรับการตั้งค่า rootless บนเทอร์มินัลของคุณ

# nvram boot-args="rootless=0"
# reboot

จากนั้นคุณควรรันคำสั่งด้านล่างบนเทอร์มินัลของพาร์ติชั่นการกู้คืน (Recovery OS)

# csrutil disable
# reboot

ฉันเพิ่งแก้ไขปัญหาของฉันเช่นนั้น ฉันไม่แน่ใจว่าส่วนแรกมีความจำเป็น ลองเท่าที่คุณต้องการ

--คำเตือน

คุณควรเปิดใช้งาน SIP อีกครั้งหลังจากทุกอย่างใช้งานได้

เพียงรีบูตอีกครั้งในโหมดการกู้คืนและเรียกใช้ใน terminal

# csrutil enable

csrutil: การกำหนดค่าการป้องกันความสมบูรณ์ของระบบ


10
ไม่ไม่ไม่. นี่คือการใช้ประโยชน์ในพื้นที่ของผู้ใช้ โปรดดูstackoverflow.com/a/33024464/743638สำหรับวิธีง่ายๆในการแก้ไขปัญหานี้ การปิดใช้งานการป้องกันจาก 1. ส่วนขยายเคอร์เนลที่ไม่ได้รับการลงนาม 2. แก้ไขไบนารีระบบ 3. การตรวจสอบและการติดตั้งบนเส้นทางของระบบ ฯลฯ เป็นต้นนั้นเป็นเรื่องที่น่ากลัว แนะนำอย่างน้อยที่สุด TEMPORARILY ลบ SIP จนกระทั่งหลังจากติดตั้งแล้วเปิดใหม่อีกครั้ง
Sacrilicious

6
ฉันจะไม่ทำเช่นนี้ นี่คือการถามถึงปัญหา สำหรับวิธีการแก้ปัญหาที่สง่างามมากขึ้นดูคำตอบของฉันด้านล่าง
มาริโอ

1
คำถามยังไม่ได้ตอบเกินหนึ่งเดือน ฉันคิดว่านี่เป็นทางออกเดียวที่หาได้ในเวลานั้น ฉันจะแก้ไขคำตอบด้วยคำเตือนเพื่อเปิดใช้งาน SIP หลังจากที่ติดตั้งทุกครั้ง
Ergun Ozyurt

12

ฉันพยายามติดตั้ง AWS ผ่าน pip ใน El Capitan แต่ข้อผิดพลาดนี้ปรากฏขึ้น

OSError: [Errno 1] ไม่อนุญาตให้ใช้งาน: '/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-uninstall/System/Library/Frameworks/Python.framework/Verions 1 1.4.1-py2.7.egg-info'

ฉันพบคำตอบที่นี่

sudo -H pip install awscli --upgrade --ignore-installed six

มันเหมาะกับฉัน :)


10

ฉันได้รับข้อผิดพลาดเดียวกันใน MacOS Sierra ของฉัน ฉันทำตามขั้นตอนเหล่านี้และสามารถติดตั้งแพ็กเกจที่ไม่สามารถใช้ได้

1. sudo pip install --ignore-installed six
2. sudo pip install --ignore-installed scrapy

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0


5

ลองใช้คำตอบร่วมกันและในที่สุดก็ใช้งานได้:

sudo -H pip install --upgrade --ignore-installed awsebcli

ไชโย


2

ติดตั้งหลามอีกครั้ง:

ชงติดตั้งหลาม

ลองอีกครั้ง:

sudo pip ติดตั้ง scrapy

ได้ผลสำหรับฉันหวังว่ามันจะช่วยได้


1

รีสตาร์ท Mac -> กด "Command + R" ค้างไว้หลังจากเริ่มการทำงาน -> เปิด OS X Utilities -> เปิด Terminal และพิมพ์ "csrutil ปิดการใช้งาน" -> Reboot OS X -> เปิด Terminal OS ใหม่ -> เปิด Terminal แล้วตรวจสอบ "สถานะ csrutil"


1

คำสั่งนี้จะทำงานได้อย่างสมบูรณ์แบบ: D

sudo -H pip install - อัพเกรด package_name --ignore-installed หก


1

บางครั้งพฤติกรรมดังกล่าวอาจเกิดขึ้นได้หากคุณพยายามติดตั้ง python3 lib ในโฟลเดอร์ python2 โดยใช้ pip แทน pip3


0
  1. - ปิด SIP (การป้องกันความสมบูรณ์ของระบบ) - จากนั้นรีบูต, ใช้คำสั่ง + R เพื่อเข้าสู่โหมดดีบั๊ก, จากนั้นเลือกเทอร์มินัล: csrutil ปิดการใช้งานรีบูต

2

sudo C_INCLUDE_PATH = / Applications / Xcode.app / เนื้อหา / ผู้พัฒนา / แพลตฟอร์ม / MacOSX.platform / ผู้พัฒนา / SDKs / MacOSX10.11.sdk / usr / include / libxml2: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX .platform / Developer / SDKs / MacOSX10.11.sdk / usr / include / libxml2 / libxml: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/ รวมถึงการติดตั้ง pip scrapy - ที่ได้รับการติดตั้งหก

3. - จากนั้นลบไฟล์เก่าหกอันออกติดตั้งอีกครั้ง sudo rm -rf /Library/Python/2.7/site-packages/six* sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/ lib / python / six * sudo pip ติดตั้งหก

4. - จากนั้นตั้งค่า csrutil ให้เปิดใช้งานการรีบูต

- เส็งเคร็งทำงานได้ในขณะนี้



-1

ฉันไม่มีการพึ่งพาที่อื่นในบรรทัดดังนั้นฉันจึงติดตั้งข้อกำหนดอื่น ๆ สำหรับโครงการดังนี้:

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