OSX El Capitan: sudo pip install OSError: [एर्रानो: 1] ऑपरेशन की अनुमति नहीं है


127

जब मैं दौड़ता हूं:

sudo pip install ipython

मुझे निम्नलिखित त्रुटि मिलती है

OSError: [Errno: 1] ऑपरेशन की अनुमति नहीं है: '/ सिस्टम / नियम / नियम / कार्य / पाइथन.फ्रेमवर्क / संस्करण / 2.7 / शेष'

निष्पादित अंतिम कमांड ऊपर दी गई निर्देशिका बनाने की कोशिश करती है।

साथ ही, निम्न कमांड किसी भी त्रुटि को प्रदान किए बिना iPython स्थापित करने में विफल रहता है।

sudo pip install --user python

(अगर मैं इस OS के अन्य लोगों के मामले को देखूँ तो मैक OS X El Capitan पर हूँ।)



मैंने एक उत्तर जोड़ा है जो बताता है कि कैसे संशोधित किया $PATHजाए ताकि आप इंस्टॉल किए गए -सर पैकेज के लिए निष्पादन योग्य कॉल कर सकें। stackoverflow.com/a/47102398/117471
ब्रूनो ब्रोंस्की

2
आप के sudoसाथ उपयोग नहीं करना चाहिए --user। क्या --userकरता है में स्थापित है ~/Libraryके बजाय /Libraryआप उपयोग करने के लिए की जरूरत नहीं है sudoवहाँ स्थापित करने के लिए। लेकिन एक बार जब आप स्थापित कर लेते हैं sudo, तो निर्देशिकाएं और फाइलें सभी के स्वामित्व में होती हैं root। फिर आपको sudoउन्हें और कुछ करने के लिए उपयोग करना होगा। बदले में आपको sudoअन्य चीजों के लिए उपयोग करने की आवश्यकता होगी जिन्हें आपको इसके लिए उपयोग नहीं करना चाहिए। फिर डेटा को नष्ट करने के लिए एक ईमानदार गलती भी एक त्रुटि को फेंकने से जा सकती है।
ब्रूनो ब्रोंस्की

जवाबों:


205

बताने वाले निर्देश sudo pip installस्वाभाविक रूप से गलत हैं।

अगर वहाँ कोई ट्यूटोरियल है जो कहता है कि आपको करना चाहिए sudo pipतो कृपया इस पैकेज के खिलाफ बग दर्ज करें। लेखक पाइथन समुदाय को शिक्षित कर रहा है, क्योंकि समय sudo pipएक टूटी हुई प्रथा साबित हुई है।

OSX El Capitan ने ऑपरेटिंग सिस्टम फ़ाइलों को नुकसान पहुंचाने से रोकने के लिए एक तंत्र की शुरुआत की/System/Library/Frameworks/Python.framework/Versions/2.7/shareसंरक्षित स्थानों में से एक है। एक सामान्य उपयोगकर्ता के पास वहां कोई फाइल रखने या लिखने का कोई कारण नहीं है । इसका कारण यह है कि ऑपरेटिंग सिस्टम खुद इन फ़ाइलों पर निर्भर करता है और sudo pip, ऊपर से दिए गए सभी बल के साथ, बिना शर्त उन्हें अधिलेखित कर देगा। आमतौर पर बुरी चीजें नहीं होंगी, लेकिन संभावना है। Apple अपने OS उपयोगकर्ताओं को गलती से उनकी स्थापना को रोकना चाहता है।

इसके बजाय, आपको अपने उपयोगकर्ता के होम फ़ोल्डर में IPython की तरह एक पायथन पैकेज स्थापित करने की आवश्यकता है । सबसे आसान तरीका है एक आभासी वातावरण बनाना , इसे सक्रिय करना और फिर आभासी वातावरण में पाइप चलाना ।

उदाहरण:

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

और जानकारी

वैकल्पिक रूप से, एक करने में सक्षम होना चाहिए pip install --user। लेकिन फिर से, किसी भी sudo की जरूरत नहीं है और आपको PATHपर्यावरण चर को मैन्युअल रूप से सेट करने की आवश्यकता है ।


5
कोई virtualenv वांछित है और आप विश्व स्तर पर (जैसे /Library/Python/2.7/site-packages), मॉड्यूल स्थापित का उपयोग कर नीचे मेरी समाधान की कोशिश करना चाहते हैं easy_install stackoverflow.com/a/33463702/3078330
smat88dd

3
क्या आपके पास 'सुडो पाइप' के खराब होने के बारे में इस परिप्रेक्ष्य के लिए एक प्रशस्ति पत्र है ("जैसा कि समय ने सूडो पाइप को एक टूटी हुई प्रथा साबित कर दिया है)"? मुझे आपके द्वारा दिए गए उद्धरणों में sudo की कोई चर्चा नहीं दिख रही है और ट्यूटोरियल virtualenvs बनाने के लिए पहला कदम सूचीबद्ध करता है क्योंकि 'pip install virtualenv' है जो आपकी सलाह का पालन करने के लिए एक परिपत्र निर्भरता बनाने के लिए लगता है।
वॉन

1
@ वॉन: pip install virtualenvअब पाइथन 3.4+ की जरूरत नहीं होनी चाहिए, क्योंकि वे बिल्ट-इन python -m venvवर्चुअनव समकक्ष के साथ आते हैं । docs.python.org/3/library/venv.html
मिकको ओहतामा

29
सभी उचित सम्मान के साथ, यह मूल प्रश्न को संबोधित नहीं करता है। मैं IPython स्थापित करने और इसे विश्व स्तर पर (मेरी मशीन पर सभी उपयोगकर्ताओं के लिए) उपलब्ध कराने की कोशिश कर रहा हूं, और न ही कोई virtualenv और न ही इसके लिए pip install --user IPythonमदद करता हूं । इसके अलावा, (कम से कम मेरी मशीन पर) कमांड रखने में pip install --user IPythonविफल रहता है । ipython$PATH
जपताज़ो

3
आपने मुझे सिखाया और मेरा समय भी बचाया। एक बड़ा धन्यवाद मैं sudo और सब कुछ काम करना बंद कर दिया! बहुत बढ़िया जवाब।
पार्थ गुप्ता

24

मेरी भी यही समस्याएँ थीं, लेकिन easy_install "module"मेरे लिए समस्या का समाधान करना था।

मुझे यकीन नहीं है कि क्यों, लेकिन पाइप और easy_install विभिन्न स्थापित स्थानों का उपयोग करते हैं, और easy_install ने सही लोगों को चुना है।

संपादित करें: पुन: जाँच के बिना लेकिन टिप्पणियों के कारण; ऐसा लगता है कि अलग-अलग (OSX और काढ़ा-स्थापित) इंस्टॉलेशन एक-दूसरे के साथ हस्तक्षेप करते हैं, यही वजह है कि उनका उल्लेख किया गया टूल वास्तव में अलग-अलग स्थानों की ओर इशारा करते हैं (क्योंकि वे अलग-अलग प्रतिष्ठानों से संबंधित हैं)। मैं समझता हूं कि आमतौर पर एक इंस्टॉलेशन से एक ही फ़ोल्डर में वे उपकरण।


क्या आपके पास दो अलग-अलग पायथन इंटरप्रेटर स्थापित हैं और easy_installदूसरे के लिए कॉन्फ़िगर किए गए हैं ?
मिको ओक्टामा

मैं 2-3 विभिन्न अजगर संस्करण स्थापित है, लेकिन मैं easy_installउन सभी के लिए: easy_install-2.6, easy_install-2.7,easy_install-3.5
smat88dd

सबसे अधिक संभावना है pipऔर easy_installअलग-अलग पायथन को इंगित करता है। आप whichUNIX कमांड के साथ इसका पता लगा सकते हैं, फिर pipउपयोग करने के लिए सही कमांड का पता लगा सकते हैं।
मिको ओक्टामा

1
उन्नयन से पहले पुराने OSX से पहले स्थापित हो सकता है?
मिको ओक्टामा

1
पाइप और easy_install विभिन्न स्थापित स्थानों का उपयोग करते हैं - नहीं, वे ठीक उसी स्थानों का उपयोग करते हैं। इसने दुर्घटना के रूप में काम किया @MikkoOhtamaa आपको अपनी टिप्पणियों में दिखाने की कोशिश कर रहा था। यह स्पष्ट रूप से गैर-उत्तर है।
पायोत्र डोब्रोगोस्ट

19

आपको पायथन को पुनः स्थापित करना चाहिए:

brew reinstall python

काढ़ा पीने के लिए काढ़ा मुखपृष्ठ देखें ।


मैं दूसरा। मैं दौड़ता हूं brew install pythonतो मुझे लगता pipहै कि यह पहले से ही लागू है। उसके बाद pipकाम स्थापित (मैं w / अनुमतियाँ और इंस्टॉल पर पिप प्रति सहिष्णु इसी तरह की समस्याओं था)
travelingbones

15

pip install --ignore-installed six

यह काम करेगा, फिर आप अपना पहला कमांड आज़मा सकते हैं।

वाया http://github.com/pypa/pip/issues/3165


मेरे मामले में, मुझे भी करना था pip install --ignore-installed setuptools
ithos67

2
नहीं, यह अनुमतियों की कमी के कारण काम नहीं करेगा।
पायोत्र डोब्रोगॉस्ट

11

के pip3 install <package>बजाय इस्तेमाल किया और अनुमति के साथ समस्या हल कर दी pip


10
FYI करें, यह काम किया क्योंकि pip3पायथन 3 का उपयोग किया जाता है, जो आमतौर पर उपयोगकर्ता द्वारा स्थापित किया जाता है। दूसरी ओर, पायथन 2 (2.7) को macOS के साथ शिप किया जाता है, और टॉप रेटेड उत्तर बताते हुए इसे संरक्षित किया जाता है।
खान गुयेन

10

टीएल; डीआर $ पैथ फिक्स

  1. pip install --user package_nameएक पैकेज स्थापित करने के लिए उपयोग करें जिसमें सीएलआई निष्पादनयोग्य शामिल होना चाहिए।
  2. एक अजगर खोल लॉन्च और import package_name
  3. पता करें lib/python/...कि आउटपुट में कहां होता है और इसे सभी के साथ बदलेंbin
  4. यह होने की संभावना है $HOME/Library/Python/2.7/bin

विवरण

MacOS 10.11 El Capitan में नए सिस्टम इंटीग्रिटी प्रोटेक्शन के कारण, आप अब नहीं रह सकते हैं sudo pip install। हम यहाँ की खूबियों पर बहस नहीं करेंगे।

एक अन्य उत्तर बताता है कि आपको pip install --userसही होना चाहिए । लेकिन उन्होंने आपको बैक गलियों में यह पता लगाने के लिए भेजा $PATHकि आपके बारे में क्या करना है ताकि आप इंस्टॉल किए गए निष्पादन योग्य तक पहुंच प्राप्त कर सकें। सौभाग्य से, मैं पहले से ही एक असंबंधित प्रश्न के लिए इसी तरह की जरूरत को हल कर चुका हूं ।

यहाँ एक प्रतिलेख है कि कैसे मैंने अपने सिस्टम में से एक पर समस्या को हल किया। मैं यह सब सिर्फ $PATHमेरे लिए काम करने के बजाय शामिल कर रहा हूं , क्योंकि आपका सिस्टम खान से अलग हो सकता है। इस प्रक्रिया को सभी के लिए काम करना चाहिए।

$ 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

वही त्रुटि

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'

और यहां मैं इस मुद्दे को हल करने के लिए --userबिना उपयोग करता हूंsudo

$ 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 

आशा है कि यह किसी ऐसे ही मुद्दे का सामना करने वाले लोगों की मदद करेगा!


3
आप के sudoसाथ उपयोग नहीं करना चाहिए --user। क्या --userकरता है में स्थापित है ~/Libraryके बजाय /Libraryआप उपयोग करने के लिए की जरूरत नहीं है sudoवहाँ स्थापित करने के लिए। लेकिन एक बार जब आप स्थापित कर लेते हैं sudo, तो निर्देशिकाएं और फाइलें सभी के स्वामित्व में होती हैं root। फिर आपको sudoउन्हें और कुछ करने के लिए उपयोग करना होगा। बदले में आपको sudoअन्य चीजों के लिए उपयोग करने की आवश्यकता होगी जिन्हें आपको इसके लिए उपयोग नहीं करना चाहिए। फिर डेटा को नष्ट करने के लिए एक ईमानदार गलती भी एक त्रुटि को फेंकने से जा सकती है।
ब्रूनो ब्रोंस्की

9

मेरे पास वही मुद्दे थे। जैसा कि दूसरों ने उल्लेख किया है, सुडो के साथ पाइप स्थापित न करें। Daud

brew doctor 

और चेतावनियों को ठीक करें और आप अपने पाइप इंस्टॉल के साथ आगे बढ़ने में सक्षम हों।


6

कई कारणों से El Capitan पर काम करना मुश्किल है:

  1. OS X कुछ डिस्टल्यूट वेरिएबल्स को सही तरीके से सेट नहीं करता है, इसलिए पाइप नीचे के स्थानों में सहायक फ़ाइलों को स्थापित करने की कोशिश करता है /System/Library/। El Capitan इसे ब्लॉक करता है, जो कि आप में चल रही त्रुटि है।
  2. OS X में कई पुराने पैकेज शामिल हैं /System/Library/। पाइप अक्सर इन्हें अपग्रेड करना चाहते हैं लेकिन एल कैपिटान पर नहीं कर सकते।
  3. OS X /System/Library/पायथन खोज क्रम में /Library/Python/2.7/site-packages(सिस्टम-व्यापी अजगर पैकेज स्थान) से अधिक स्थान रखता है , इसलिए भले ही आप कुछ पैकेजों के नए संस्करणों को स्थापित करने का प्रबंधन करते हैं, पुराने अभी भी कुछ निर्भरता को तोड़ते हुए, लोड हो जाते हैं।

इन सभी के लिए https://apple.stackexchange.com/a/223163/143849 पर वर्कअराउंड हैं । लेकिन आप पायथन के अपने संस्करण को मानक पायथन इंस्टॉलर, होमब्रेव या एनाकोंडा के माध्यम से स्थापित करना सबसे अच्छा हो सकता है।


4

मुझे लगता है कि आपके पास अन्य पैकेज के साथ कुछ संघर्ष है। मेरे लिए यह था six। तो आपको इस तरह एक कमांड का उपयोग करने की आवश्यकता है:

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

या

pip install --ignore-installed six


3
@MikkoOhtamaa द्वारा दिए गए उत्तर का कौन सा हिस्सा आपको समझ में नहीं आता है कि आप अभी भी पाइप के साथ sudo का उपयोग करने का सुझाव देते हैं ?
पिओर Dobrogost

@PiotrDobrogost, आप पूछने से पहले ठीक से क्यों नहीं पढ़ते हैं। मेरा उत्तर संबंधित है six
रूहुल अमीन

3
फिर, @MikkoOhtamaa द्वारा दिए गए उत्तर के किस भाग को आप यह नहीं समझते हैं कि आप अभी भी पाइप के साथ sudo का उपयोग करने का सुझाव देते हैं ?
पायोत्र डोब्रोगोस्ट

1

मैं मिक्को से पूरी तरह सहमत हूं, लेकिन अगर आप अभी भी इसे करना चाहते हैं, तो यहां तरीका है:

  • पुनर्प्राप्ति मोड में पुनरारंभ करें (cmd + R दबाए रखें)
  • उपयोगिताओं से खुला टर्मिनल
  • कमांड का उपयोग करें csrutil disable

6
सिस्टम इंटीग्रिटी प्रोटेक्शन को अक्षम करने के निहितार्थों को स्पष्ट किए बिना यह खतरनाक सलाह हो सकती है। एक विचार यह उम्मीद है कि यह कभी भी ठीक से काम नहीं करेगा यदि आप इसे अपेक्षाकृत जल्दी से सक्षम नहीं करते हैं, जैसे कि विंडोज यूएसी और वर्चुअलाइजेशन।
एंडी मैगून

0

मैं python2.7 काढ़ा के माध्यम से स्थापित किया है और निम्नलिखित मेरी समस्या का समाधान किया है

काढ़ा सुन्न स्थापित करें

यह python3 स्थापित करता है, लेकिन यह अभी भी काम करता है और इसे 2.7 के लिए सेट करता है।


निर्दोष रूप से काम किया। धन्यवाद!!
नाइटफ़्यूरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.