OSX El Capitan: sudo pip install OSError: [Errno: 1] İşleme izin verilmiyor


127

Koştuğumda:

sudo pip install ipython

Aşağıdaki hatayı alıyorum

OSError: [Errno: 1] İşleme izin verilmiyor: '/System/Library/Frameworks/Python.framework/Versions/2.7/share'

Yürütülen son komut, yukarıda verilen dizini oluşturmaya çalışır.

Ayrıca, aşağıdaki komut herhangi bir hata vermeden iPython'u yükleyemez.

sudo pip install --user python

(Bu işletim sistemindeki diğer kişilerin de aynı sorunu görmesi durumunda Mac OS X El Capitan kullanıyorum.)



$PATHYüklü kullanıcı paketleri için çalıştırılabilir dosyaları çağırabilmeniz için sayfanızı nasıl değiştireceğinizi açıklayan bir cevap ekledim . stackoverflow.com/a/47102398/117471
Bruno Bronosky

2
Sen kullanmamalısınız sudoile --user. Oraya yüklemek için kullanmak zorunda değilsiniz yerine --useriçine yükleme nedir . Ancak bir kez kurduğunuzda , dizinler ve dosyalar tümünün sahibi olur . O zaman onlara başka bir şey yapmak zorundasın. Bu da onu kullanmamanız gereken başka şeyler için kullanmanızı gerektirecektir . O zaman dürüst bir hata bile bir hata atmaktan verileri yok etmeye kadar gidebilir. ~/Library/Librarysudosudorootsudosudo
Bruno Bronosky

Yanıtlar:


205

Anlatan talimatlar sudo pip installdoğası gereği yanlıştır.

Yapmanız gerektiğini söyleyen herhangi bir öğretici varsa, sudo piplütfen bu pakete karşı bir hata bildirin. Yazar, zamanın sudo pipbozuk bir uygulama olduğunu kanıtladığı için Python topluluğunu eğitmiyor .

OSX El Capitan, işletim sistemi dosyalarının zarar görmesini önlemek için bir mekanizma tanıttı . /System/Library/Frameworks/Python.framework/Versions/2.7/sharekorunan konumlardan biridir. Normal bir kullanıcının oraya dosya koymak veya yazmak için bir nedeni yoktur . Bunun nedeni, işletim sisteminin kendisinin bu dosyalara güvenmesidir sudo pipve yukarıdan verilen tüm kuvvetle, koşulsuz olarak bunların üzerine yazacaktır. Genellikle kötü şeyler olmazdı, ama şans var. Apple, işletim sistemi kullanıcılarını yanlışlıkla kurulumlarını engellemeye karşı korumak istiyor.

Bunun yerine, IPython gibi bir Python paketini yerel olarak kullanıcınızın ana klasörüne yüklemeniz gerekir . En kolay yol, bir sanal ortam oluşturmak , onu etkinleştirmek ve ardından sanal ortamda pip çalıştırmaktır .

Misal:

cd ~  # Go to home directory
virtualenv my-venv
source my-venv/bin/activate
pip install IPython

Daha fazla bilgi

Alternatif olarak, kişi yapabilmelidir pip install --user. Ancak yine, sudo gerekmez ve PATHortam değişkenini manuel olarak ayarlamanız gerekir .


5
Virtualenv istenmiyorsa ve global olarak (ör. /Library/Python/2.7/site-packages) modül yüklemek istiyorsanız, easy_install stackoverflow.com/a/33463702/3078330
smat88dd

3
Bu perspektif için 'sudo pip'in kötü olduğuna dair bir alıntı var mı ("zamanın sudo pip'in bozuk bir uygulama olduğunu kanıtladığı gibi")? Verdiğiniz alıntılarda sudo ile ilgili herhangi bir tartışma görmüyorum ve eğitici, tavsiyelerinize uymaya çalışırken döngüsel bir bağımlılık yaratıyor gibi görünen 'pip install virtualenv' olarak virtualenv oluşturmanın ilk adımını listeliyor.
Von

1
@Von: pip install virtualenvYerleşik python -m venvvirtualenv eşdeğeri ile birlikte geldiklerinden Python 3.4+ için artık gerekli değildir . docs.python.org/3/library/venv.html
Mikko

29
Tüm saygımla, bu asıl soruyu ele almıyor. IPython'u kurmaya ve onu global olarak kullanıma sunmaya çalışıyorum (makinemdeki tüm kullanıcılar için) ve ne bir virtualenv ne de pip install --user IPythonbununla ilgili yardım. Üstelik pip install --user IPythonyerleştirmek için başarısız ipythonkomutunu $PATH(benim makinede en az).
jpetazzo

3
Bana öğrettin ve zamanımı da kurtardın. Büyük bir Teşekkür sudo kullanmayı bıraktım ve her şey işe yaradı! Mükemmel cevap.
Parth Gupta

24

Ben de aynı sorunları yaşadım ama kullanmak easy_install "module"benim için sorunu çözdü.

Neden olduğundan emin değilim, ancak pip ve easy_install farklı kurulum konumları kullanıyor ve easy_install doğru olanları seçti.

Düzenleme: yeniden kontrol etmeden ancak yorumlar nedeniyle; Görünüşe göre farklı (OSX ve demleme-kurulmuş) kurulumlar birbirine karışıyor, bu yüzden bahsedilen araçlar gerçekten farklı konumlara işaret ediyor (farklı kurulumlara ait oldukları için). Bu araçların genellikle bir kurulumdan aynı klasöre işaret ettiğini anlıyorum.


Yüklü iki farklı Python yorumlayıcınız var mı ve easy_installbir başkası için yapılandırılmış mı?
Mikko Ohtamaa

Ben 2-3 farklı piton versiyonları yüklü var, ama ben easy_installhepsi için: easy_install-2.6, easy_install-2.7,easy_install-3.5
smat88dd

Büyük olasılıkla pipve easy_installfarklı Python'lara işaret ediyor. Bunu whichUNIX komutuyla çözebilir, ardından pipkullanılacak doğru komutu bulabilirsiniz.
Mikko Ohtamaa

1
Yükseltmeden önce eski OSX'ten önceden yükleme olabilir mi?
Mikko Ohtamaa

1
pip ve easy_install farklı kurulum konumları kullanır - hayır, tam olarak aynı yerleri kullanırlar. Bu çalıştı @MikkoOhtamaa yaptığı yorumlarda sizden göstermeye çalıştığını olarak kazara. Bu açıkça cevapsızdır.
Piotr Dobrogost

19

Python'u yeniden yüklemelisiniz:

brew reinstall python

Demlemek için demleme ana sayfasına bakın .


Ben ikinci. Koşarım brew install pythono zaman pipzaten yerinde olduğunu düşünüyorum . Bu pipkurulumdan sonra işe yaradı (kurulumlarda izinler ve borcuyla ilgili benzer sorunlar yaşadım)
gezici


11

Kullanılan pip3 install <package>yerine ve birlikte izni sorununu çözdü pip.


10
Bilginize, bu işe yaradı çünkü pip3genellikle kullanıcı tarafından yüklenen Python 3 kullanıyor. Öte yandan Python 2 (2.7), macOS ile birlikte gelir ve en yüksek puan alan yanıtın açıkladığı gibi korunur.
Khanh Nguyen

10

TL; DR $ PATH düzeltme

  1. pip install --user package_nameCLI yürütülebilir dosyaları içermesi gereken bir paketi yüklemek için kullanın .
  2. Bir python kabuğu başlatın ve import package_name
  3. lib/python/...Çıktıda nerede oluştuğunu bulun ve hepsini değiştirinbin
  4. Olması muhtemel $HOME/Library/Python/2.7/bin

ayrıntılar

MacOS 10.11 El Capitan'daki yeni Sistem Bütünlüğü Koruması nedeniyle artık yapamazsınız sudo pip install. Bunun esasını burada tartışmayacağız.

Başka bir cevap pip install --user, doğru olanı yapmanız gerektiğini açıklıyor . Ancak $PATH, kurulu çalıştırılabilir dosyalara erişebilmeniz için ne yapmanız gerektiğini anlamanız için sizi arka sokaklara gönderdiler . Şans eseri, ilgisiz bir soru için benzer bir ihtiyacı zaten çözdüm .

İşte sistemlerimden birinde sorunu nasıl çözdüğümün bir dökümü. Benim için işe yarayanlardan ziyade hepsini dahil ediyorum $PATH, çünkü sizin sisteminiz benimkinden farklı olabilir. Bu süreç herkes için çalışmalı.

$ pip install --user jp
Collecting jp
  Downloading jp-0.2.4.tar.gz
Installing collected packages: jp
  Running setup.py install for jp ... done
Successfully installed jp-0.2.4

$ python -c 'import jp; print jp'
<module 'jp' from '/Users/bbronosky/Library/Python/2.7/lib/python/site-packages/jp/__init__.pyc'>

$ find /Users/bbronosky/Library/Python -type f -perm -100
/Users/bbronosky/Library/Python/2.7/bin/jp

$ which jp

$ echo -e '\n''export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> ~/.bashrc

$ bash # starting a new bash process for demo, but you should open a new terminal

$ which jp
/Users/bbronosky/Library/Python/2.7/bin/jp

$ jp
usage: jp <expression> <filepath>

10

Aynı hata

Installing collected packages: six, pyparsing, packaging, appdirs, setuptools
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/six.py'

ve burada kullandığım --userolmadan sudobu sorunu çözmek için

$ pip install --user scikit-image h5py keras pygame
Collecting scikit-image
  Downloading http://mirrors.aliyun.com/pypi/packages/65/69/27a1d55ce8f77c8ac757938707105b1070ff4f2ae47d2dc99461bfae4491/scikit_image-0.13.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (28.1MB)
    100% |████████████████████████████████| 28.1MB 380kB/s
Collecting h5py
  Downloading http://mirrors.aliyun.com/pypi/packages/b7/cc/1c29b0815b12de2c92b5323cad60f724ac8f0e39d0166d0b9dfacbcb70dd/h5py-2.7.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)
    100% |████████████████████████████████| 4.5MB 503kB/s
Requirement already satisfied: keras in /Library/Python/2.7/site-packages
Requirement already satisfied: pygame in /Library/Python/2.7/site-packages
Requirement already satisfied: matplotlib>=1.3.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scikit-image)
Requirement already satisfied: six>=1.7.3 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: pillow>=2.1.0 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: networkx>=1.8 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: PyWavelets>=0.4.0 in /Library/Python/2.7/site-packages (from scikit-image)
Collecting scipy>=0.17.0 (from scikit-image)
  Downloading http://mirrors.aliyun.com/pypi/packages/72/eb/d398b9f63ee936575edc62520477d6c2353ed013bacd656bd0c8bc1d0fa7/scipy-0.19.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (16.2MB)
    100% |████████████████████████████████| 16.2MB 990kB/s
Requirement already satisfied: numpy>=1.7 in /Library/Python/2.7/site-packages (from h5py)
Requirement already satisfied: theano in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: pyyaml in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: tornado in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: pyparsing>=1.5.6 in /Users/qiuwei/Library/Python/2.7/lib/python/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: nose in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow>=2.1.0->scikit-image)
Requirement already satisfied: decorator>=3.4.0 in /Library/Python/2.7/site-packages (from networkx>=1.8->scikit-image)
Requirement already satisfied: singledispatch in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: certifi in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: backports_abc>=0.4 in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Installing collected packages: scipy, scikit-image, h5py
Successfully installed h5py-2.7.0 scikit-image-0.13.0 scipy-0.19.0 

Umarım benzer bir sorunla karşılaşan birine yardımcı olur!


3
Sen kullanmamalısınız sudoile --user. Oraya kurmak için kullanmak zorunda değilsiniz yerine --useriçine yükleme nedir . Ancak bir kez kurduğunuzda , dizinler ve dosyalar tümünün sahibi olur . O zaman kullanmalısın~/Library/Librarysudosudorootsudo onlara başka bir şey yapmak zorundasın. Bu da onu kullanmamanız sudogereken başka şeyler için kullanmanızı gerektirecektir . O zaman dürüst bir hata bile bir hata atmaktan verileri yok etmeye kadar gidebilir.
Bruno Bronosky

9

Ben de aynı sorunları yaşadım. Başkalarının da bahsettiği gibi, sudo ile pip kurulumunu çalıştırmayın. Çalıştırmak

brew doctor 

ve uyarıları düzelttiğinizde pip kurulumunuza devam edebilmelisiniz.


6

El Capitan'da birkaç nedenden dolayı pip çalmak zor:

  1. OS X, bazı dağıtım değişkenlerini doğru şekilde ayarlamaz, bu nedenle pip, yardımcı dosyaları aşağıdaki konumlara yüklemeye çalışır: /System/Library/ . El Capitan bunu engelliyor, bu da karşılaştığınız hatadır.
  2. OS X, altında bir dizi güncel olmayan paket içerir. /System/Library/ . pip genellikle bunları yükseltmek ister ancak El Capitan'da bunu yapamaz.
  3. OS X /System/Library/, python arama sırasına /Library/Python/2.7/site-packages(sistem genelinde python paketi konumu) göre daha yükseğe yerleştirir , bu nedenle bazı paketlerin daha yeni sürümlerini kurmayı başarsanız bile, eskiler yine de yüklenir ve bazı bağımlılıkları ortadan kaldırır.

Bunların tümü için https://apple.stackexchange.com/a/223163/143849 adresinde geçici çözümler vardır . Ancak, standart Python yükleyici, Homebrew veya Anaconda aracılığıyla kendi Python sürümünüzü kurmanız en iyisi olabilir.


4

Sanırım diğer paketle bazı çatışmalarınız var. Benim için öyleydi six. Bu nedenle, bunun gibi bir komut kullanmanız gerekir:

pip install google-api-python-client --upgrade --ignore-installed six

veya

pip install --ignore-installed six


3
@MikkoOhtamaa tarafından verilen cevabın hangi kısmını hala pip ile sudo kullanmayı önerdiğinizi anlamıyorsunuz ?
Piotr Dobrogost

@PiotrDobrogost, neden sormadan önce düzgün okumuyorsun. Cevabım ile ilgili six.
Ruhul Amin

3
Yine, @MikkoOhtamaa tarafından verilen cevabın hangi kısmını hala pip ile sudo kullanmayı önerdiğinizi anlamıyorsunuz ?
Piotr Dobrogost

1

Mikko'ya tamamen katılıyorum, ancak yine de yapmak istiyorsanız, yol şu:

  • Kurtarma modunda yeniden başlatın (cmd + R'yi basılı tutun)
  • Yardımcı programlardan açık terminal
  • Komutu kullanın csrutil disable

6
Bu, Sistem Bütünlüğü Korumasını devre dışı bırakmanın sonuçlarını açıklamadan tehlikeli bir tavsiye olabilir. Göz önünde bulundurulması gerekenlerden biri, Windows UAC ve Sanallaştırma gibi, nispeten hızlı bir şekilde yeniden etkinleştirmezseniz, bir daha asla düzgün çalışmayacağı beklentisidir.
andy magoon

0

Brew aracılığıyla python2.7 yükledim ve aşağıdaki sorunumu çözdü

brew install numpy

Python3'ü kurar, ancak yine de çalışır ve onu 2.7 için de ayarlar.


Kusursuz çalıştı. Teşekkürler!!
NightFury
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.