“OSError: [Errno 1] Pengoperasian tidak diizinkan” ketika menginstal Scrapy di OSX 10.11 (El Capitan) (Perlindungan Integritas Sistem)

206

Saya mencoba untuk menginstal kerangka Python Scrapy di OSX 10.11 (El Capitan) melalui pip. Skrip instalasi mengunduh modul yang diperlukan dan pada beberapa titik mengembalikan kesalahan berikut:

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'

Saya sudah mencoba untuk menonaktifkan fitur tanpa root di OSX 10.11 dengan perintah:

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

tapi saya masih mendapatkan kesalahan yang sama ketika mesin reboot.

Adakah petunjuk atau ide dari rekan StackExchangers saya?

Jika ini membantu, output skrip lengkap adalah sebagai berikut:

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'
Luis U.
sumber
Kemungkinan rangkap dari Tidak dapat menginstal nltk di Mac OS El Capitan
hectorpal
Pertanyaan-pertanyaan yang sedang dibahas di sini: apple.stackexchange.com/questions/209572/...
hectorpal
Mungkin Anda membantu Anda tanpa menonaktifkan SIP: stackoverflow.com/a/32930419/3090526
nvg58
5
Saya memiliki masalah yang sama persis ketika saya mencoba menginstal "virtualenvwrapper" menggunakan pip tetapi perintah ini bekerja untuk saya: "sudo pip install --ignore -install virtualenvwrapper" Jadi itu mungkin berlaku untuk kasus Anda juga tanpa harus melalui proses yang menyakitkan sekitar
Arabasta

Jawaban:

153

Saya juga berpikir sama sekali tidak perlu untuk mulai meretas OS X.

Saya bisa menyelesaikannya dengan melakukan a

brew install python

Tampaknya menggunakan python / pip yang datang dengan El Capitan baru memiliki beberapa masalah.

Mario
sumber
2
Bekerja untuk saya juga, dan memberi saya Python 2.7.X. Jawaban ini seharusnya menang
Russell_A
3
Ini adalah jawaban terbaik untuk pengguna El Capitan Mac
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Anda telah menunjukkannya dengan benar! Ini harus diterima jawaban!
Muaaz salagar
itu berhasil untukku. (Sierra 10.13.6)
Michael Guild
@codersofthedark mungkin brew install python3bisa menyelesaikan ini karena pada sistem yang lebih baru python3 sekarang adalah python default.
Mario
399
pip install --ignore-installed six

Akan melakukan triknya.

Sumber: github.com/pypa/pip/issues/3165

Sath
sumber
51
Ini bekerja dengan baik bagi saya ketika menginstal awscli pada El Capitan tanpa mengacaukan instalasi python:sudo pip install --ignore-installed awscli
Luke
3
tidak dapat mengimpor kasar saat dipasang dengan metode iniImportError: cannot import name xmlrpc_client
harinsa
3
--ignore-installedBendera melakukan trik untuk AWS Elastic Beanstalk Cli untuk saya juga. Akhirnya ...
John the King
1
ini bekerja dengan baik untuk saya juga. Saya pikir ini harus menjadi jawaban yang benar.
Paul Carlton
1
Ini berhasil untuk saya sudo pip install --ignore-installed scrapy.
Sophia Feng
89

Seperti jawaban yang lain katakan, itu karena Perlindungan Integritas Sistem yang baru, tapi saya percaya jawaban lain terlalu rumit.

Jika Anda hanya akan menggunakan paket itu di pengguna saat ini, Anda harus dapat menginstalnya dengan baik, tanpa perlu menonaktifkan SIP, dengan menggunakan --userflag. Seperti ini:

sudo pip install --user packagename
dietbacon
sumber
2
Saya tidak jelas bagaimana tepatnya berbagai flag ini bekerja, tetapi jawaban ini tampaknya paling masuk akal bagi saya. (Juga, itu berhasil :)
xdhmoore
@ xdhmoore Terima kasih, saya pikir juga haha. Tidak perlu menonaktifkan SIP atau menginstal python baru atau mengacaukan dependensi.
dietbacon
Untuk mkvirtualenv, ini tidak menginstal paket di lokasi yang diharapkan / usr / local / bin. Sebagai gantinya, sudo pip install mkvirtualenv --ignore-installed sixberfungsi seperti yang diharapkan, menempatkan virtualenvwrapper.sh di / usr / local / bin
Rob
@ Rob Itu benar-benar tidak. Bendera --user hanya menginstal untuk pengguna saat ini, jadi masuk akal bahwa itu tidak akan menginstal dalam folder yang tidak spesifik pengguna. Bagi saya, perintah ini menginstal paket saya di "/ Pengguna / nama pengguna / Perpustakaan / WordPress / 2,7/lib/python/site-packag‌ es" untuk file .py dan "/ Pengguna / nama pengguna/Library/Python/2.7/bin" untuk file .sh
dietbacon
1
Ini bekerja untukku untuk rasa-nlu. sudo pip install --user rasa_nlu
nantitv
40

Jawaban pilihan tinggi tidak berfungsi untuk saya, sepertinya berfungsi untuk pengguna El Capitan. Tetapi untuk pengguna MacOS Sierra coba langkah-langkah berikut

  1. brew install python
  2. sudo pip install --user <package name>
LYu
sumber
sudo pip install --user <package name>bekerja untuk saya, tanpa perlu menginstal ulang python
Datageek
23

Peringatan

Saya akan menyarankan sangat menentang memodifikasi sistem Python di Mac; ada banyak masalah yang bisa terjadi.

Kesalahan khusus Anda menunjukkan bahwa penginstal memiliki masalah menyelesaikan dependensi untuk Scrapy tanpa memengaruhi instalasi Python saat ini. Sistem menggunakan Python untuk sejumlah tugas penting, jadi penting untuk menjaga instalasi sistem stabil dan seperti yang awalnya diinstal oleh Apple.

Saya juga akan menguras semua kemungkinan lain sebelum melewati keamanan bawaan.

Paket Manajer Solusi:

Silakan melihat ke dalam alat virtualisasi Python seperti virtualenv pertama; ini akan memungkinkan Anda untuk bereksperimen dengan aman.

Alat lain yang bermanfaat untuk menggunakan bahasa dan perangkat lunak tanpa bertentangan dengan Mac OS Anda adalah Homebrew . Seperti MacPorts atau Fink , Homebrew adalah manajer paket untuk Mac , dan berguna untuk mencoba banyak bahasa dan alat lainnya dengan aman.

Pemasangan Perangkat Lunak "Roll your own":

Jika Anda tidak menyukai pendekatan manajer paket, Anda bisa menggunakan /usr/localpath atau membuat /opt/localdirektori untuk menginstal instalasi Python alternatif dan memperbaiki jalur Anda di .bashrc. Perhatikan bahwa Anda harus mengaktifkan root untuk solusi ini.

Bagaimana cara melakukannya:

Jika Anda benar-benar harus menonaktifkan pemeriksaan keamanan (dan saya sangat berharap ini untuk sesuatu selain mengacaukan bahasa dan sumber daya sistem), Anda dapat menonaktifkannya sementara dan mengaktifkannya kembali menggunakan beberapa teknik dalam posting ini tentang cara Menonaktifkan Sistem. Perlindungan Integritas .

rholmes
sumber
2
Ini sedikit investasi dalam waktu dan membutuhkan beberapa kemampuan baris perintah, tetapi hasilnya sangat sepadan - Saya menggunakan lingkungan virtual yang sama untuk Ruby (RVM), Perl, dll. Homebrew berguna untuk mencoba banyak bahasa dan alat lain dengan aman demikian juga.
rholmes
16

Ini melakukan trik untuk saya:

   sudo pip install scrapy --ignore-installed six
Roger
sumber
Ya, ini juga berfungsi untuk sudo pip install virtualenvwrapper --ignore-installed sixmenghindari kesalahan ini: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

Anda harus menonaktifkan "Perlindungan Integritas Sistem" yang merupakan fitur baru di El Capitan.

Pertama, Anda harus menjalankan perintah untuk konfigurasi root pada terminal Anda

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

Kemudian, Anda harus menjalankan perintah di bawah ini pada terminal partisi pemulihan (Recovery OS)

# csrutil disable
# reboot

Saya baru saja menyelesaikan masalah saya seperti itu. Saya tidak yakin bahwa bagian pertama diperlukan. Cobalah sesuka Anda.

--PERINGATAN

Anda harus mengaktifkan SIP lagi setelah semuanya berfungsi;

Cukup reboot lagi ke Recovery Mode dan jalankan di terminal

# csrutil enable

csrutil: Konfigurasi Perlindungan Integritas Sistem

Ergun Ozyurt
sumber
10
tidak tidak Tidak. Ini adalah util yang berjalan di ruang pengguna. Silakan lihat stackoverflow.com/a/33024464/743638 untuk cara yang relatif sederhana. Menonaktifkan perlindungan dari 1. ekstensi kernel yang tidak ditandatangani 2. memodifikasi binari sistem 3. memeriksa dan memasang jalur sistem dll. Dll. Setidaknya merekomendasikan TEMPORARILY menghapus SIP sampai setelah menginstal, dan kemudian nyalakan kembali.
Sacrilicious
6
Saya tidak akan melakukan ini. Ini meminta masalah. Untuk pendekatan solusi yang lebih anggun lihat jawaban saya di bawah ini.
Mario
1
pertanyaan itu belum terjawab lebih dari sebulan. Saya pikir, ini adalah satu-satunya solusi "dapat ditemukan" pada waktu itu. saya akan mengedit jawaban saya dengan beberapa peringatan untuk mengaktifkan SIP setelah semuanya diinstal.
Ergun Ozyurt
12

Saya mencoba menginstal AWS melalui pip di El Capitan tetapi kesalahan ini muncul

OSError: [Errno 1] Operasi tidak diizinkan: '/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-uninstall/System/Library/Frameworks/Python.framework/Vers//pengiriman/Vers//sup/ 1.4.1-py2.7.egg-info '

Saya menemukan jawabannya di sini

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

Ini bekerja untuk saya :)

Evelin Ponce
sumber
10

Saya mendapatkan kesalahan yang sama pada MacOS Sierra saya. Saya mengikuti langkah-langkah ini dan berhasil menginstal paket scarpy.

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

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0
skipper21
sumber
5

Ini berhasil bagi saya.

sudo pip instal --ignore-instal goresan

Nona Haha
sumber
5

Mencoba kombinasi beberapa jawaban dan ini akhirnya berhasil:

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

Bersulang

saza
sumber
2

pasang python lagi:

buat instal python

coba lagi:

sudo pip install kasar

bekerja untuk saya, semoga bisa membantu

dominicli
sumber
1

Nyalakan kembali Mac -> tahan "Command + R" setelah startup berbunyi -> Buka Utilitas OS X -> Buka Terminal dan ketik "csrutil disable" -> Reboot OS X -> Buka Terminal dan periksa "status csrutil"

Sandeep
sumber
1

Perintah ini akan bekerja dengan baik: D

sudo -H pip instal --upgrade package_name --ignore -install enam

Anmol Shrivastava
sumber
1

Kadang-kadang perilaku seperti itu dapat dicapai jika Anda mencoba menginstal python3 lib di folder python2 menggunakan pip, bukan pip3.

pengguna3860984
sumber
0
  1. - tutup SIP (system Integrity Protection) - lalu reboot, gunakan perintah + R untuk masuk ke mode debug, lalu pilih terminal: csrutil nonaktifkan reboot

2.

sudo C_INCLUDE_PATH = / Aplikasi / Xcode.app / Isi / Pengembang / Platform / MacOSX.platform / Pengembang / SDKs / MacOSX10.11.sdk / usr / include / libxml2: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX .platform / Pengembang / SDKs / MacOSX10.11.sdk / usr / include / libxml2 / libxml: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/ termasuk pip install scrapy --ignore -install six

3. - lalu hapus enam lama, pasang lagi 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 instal enam

4. - lalu atur kembali csrutil aktifkan reboot

- pekerjaan jelek sekarang

jimmyzhouj
sumber
-1

Ini bekerja untuk saya:

pip install scrapy --user -U
DearX
sumber
-1

Saya kehilangan ketergantungan di tempat lain, jadi saya menginstal persyaratan lain untuk proyek seperti ini:

pip install --user -r requirements.txt
firasat
sumber