सवाल ओएसएक्स एल कैपिटन पर सेटअपटॉल्स का उन्नयन


मैं setuptools अपग्रेड करने की कोशिश कर रहा हूँ। वास्तव में मैं उत्तरदायी अपग्रेड करने की कोशिश कर रहा हूं लेकिन यह setuptools को अपग्रेड करने और विफल करने की कोशिश कर रहा है। इसे करने की कोशिश करने में भी असफल रहता है। यहां तक ​​कि इसे अनइंस्टॉल करने का प्रयास करने में भी विफल रहता है

$ sudo -H pip install --upgrade setuptools
Collecting setuptools
  Using cached setuptools-18.4-py2.py3-none-any.whl
Installing collected packages: setuptools
  Found existing installation: setuptools 1.1.6
    Uninstalling setuptools-1.1.6:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/commands/install.py", line 311, in run
    root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip-7.1.2-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.2-py2.7.egg/pip/req/req_install.py", line 716, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-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.2-py2.7.egg/pip/utils/__init__.py", line 315, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
    copytree(src, real_dst, symlinks=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
    raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]

मुझे सबसे ग़लत विचार नहीं है कि क्या गलत है। सभी फाइलों को देख रहे हैं /System/Library/Frameworks/Python.framework/Versions/2.7/ और प्रत्येक फ़ाइल के नीचे स्वामित्व है root:wheel

मेरे द्वारा यह कैसे किया जा सकता है?


76
2017-10-20 10:50


मूल


मेरे पास कोई समाधान नहीं है लेकिन मेरे पास एक व्याख्या है: शायद यह नए के कारण है सिस्टम इंटीग्रटी संरक्षण। पीआईपी उन चीजों को संशोधित करने की कोशिश कर रहा है जहां इसे अब तक अनुमति नहीं है sudo। देख यह प्रश्न। मैंने अभी तक इस से निपटने के लिए समय नहीं लिया है। --user पीआईपी का विकल्प शायद मैं जो देखता हूं। यदि आपको सबकुछ "अपडेट" करने का व्यावहारिक समाधान मिलता है, तो कृपया साझा करें! - Arthur
मैं ला रहा हूँ ipdb त्रुटि जो जुड़ा हुआ है setuptools। Setuptools का उन्नयन काम नहीं करता है। यह साथ काम करता है --user=python लेकिन आईपीडीबी त्रुटि अभी भी ठीक नहीं है। - R11G


जवाब:


यह ओएस एक्स एल कैपिटन में पेश सिस्टम इंटेग्रिटी प्रोटेक्शन के कारण होता है।

जोड़ा जा रहा है --user python आदेश के लिए यह काम करने की अनुमति दी।

दूसरे शब्दों में

pip install --upgrade setuptools --user python

180
2017-11-13 07:38



pip (विपरीत easy_install) सूडो की आवश्यकता नहीं है, क्योंकि आप इसका उपयोग कर रहे हैं python उपयोगकर्ता, मैंने सुनिश्चित किया कि यह काम करता है। - Kof
मैंने इस सरल होने के समाधान के लिए बहुत सारे विकल्पों को खराब कर दिया ... - Jacksonkr
डॉकर कंटेनर के अंदर CentOS 7 पर भी काम करता है। कुछ कारणों से असफल रहा (हालांकि मई 2016 से पहले इस कदम के बिना एक ही सेटअप ने काम किया ...) - geerlingguy
मैं इसे काम नहीं कर सका, और मुझे समझ में नहीं आया कि कैसे --user विकल्प काम करना चाहिए। मेरे लिए क्या काम किया गया था सेटअप सिस्टम (अपग्रेड स्थापित करने के संबंध में) को अपग्रेड करते समय अस्थायी रूप से सिस्टम इंटेग्रिटी प्रोटेक्शन को अक्षम करना और उसके बाद इसे फिर से सक्षम करना। ऐसा करने के लिए: पुनर्प्राप्ति मोड (cmd + R) में बूट करें, टर्मिनल लॉन्च करें और दर्ज करें csrutil disable। रीबूट करें, और अपग्रेड करने के बाद, रिकवरी मोड पर रीबूट करें और एंटर करें csrutil enable। रिबूट के बाद, आईपीथॉन ने मेरे लिए ठीक काम करना जारी रखा। - Grav
मैं इस आदेश को सफलतापूर्वक निष्पादित कर सकता हूं, लेकिन कोई अपडेट नहीं किया गया है। आउटपुट इस तरह दिखता है: Collecting setuptools Using cached setuptools-28.2.0-py2.py3-none-any.whl Requirement already up-to-date: python in /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload Installing collected packages: setuptools Successfully installed setuptools-1.1.6 - diidu


जवाब यह है कि आप ओएसएक्स पर फैक्ट्री पायथन के लिए ओएसएक्स पर सेटअपटॉल्स अपडेट नहीं कर सकते हैं। कारण यह है कि फाइलें /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python उपयोगकर्ता द्वारा हटाया या संशोधित नहीं किया जा सकता है। न केवल सामान्य उपयोगकर्ता बल्कि यदि आपके पास रूट अनुमतियां हैं तो भी आप उन फ़ाइलों को संशोधित करने में असमर्थ होंगे।

निश्चित रूप से आप setuptools का एक नया संस्करण स्थापित करने के लिए कई अन्य विधियों का उपयोग कर सकते हैं लेकिन यह डिफ़ॉल्ट सिस्टम पैकेज को ओवरराइड नहीं करेगा। मतलब अगर आप उपयोग के सुझाए गए मार्ग पर जाते हैं --user python ध्वज, या आप रूट के बिना उन्हें स्थापित करना चुनते हैं ~/Library, ये सिस्टम फाइल संस्करण को ओवरराइड नहीं करेंगे।

सिस्टम डिफॉल्ट को संशोधित करने में असमर्थ होने का कारण एल कैपिटन + में एसआईपी अनुमति प्रतिबंधों के कारण है। आप एसआईपी को अक्षम कर सकते हैं लेकिन आमतौर पर इसकी अनुशंसा नहीं की जाती है।

इसके बजाय एकमात्र उचित समाधान एक पायथन वर्चुअलनेव का उपयोग करना है।


1
2017-10-10 19:01





अवलोकन

समस्या मैक ओएस पर सिस्टम इंटीग्रटी प्रोटेक्शन (एसआईपी) के साथ संयुक्त पाइथन पुस्तकालयों को विवादित कर रही है जो सिस्टम पायथन पुस्तकालयों की रक्षा करता है।

मेरी राय में सबसे अच्छा समाधान है कि आप अपनी पाइथन स्थापना को अनइंस्टॉल करें और पुनः इंस्टॉल करें और एसआईपी द्वारा संरक्षित मैक ओएस द्वारा प्रदान की गई पायथन लाइब्रेरी से अलग रखें।

मैं एसआईपी को अक्षम करने के लिए इसका पक्ष लेता हूं क्योंकि मुझे लगता है कि एसआईपी भविष्य में मैक ओएस रिलीज का हिस्सा बनने की उम्मीद है और एसआईपी यहां कारण नहीं है, यह सिर्फ विवादित पायथन पुस्तकालयों की समस्या का खुलासा करता है।

विवरण

मुझे यह मुद्दा भी उत्तर स्थापित करने का प्रयास कर रहा था।

मेरी समस्या तब शुरू हुई जब मैंने मैक ओएस के लिए उत्तरदायी स्थापना निर्देशों का पालन किया, जो कि पीआईपी के माध्यम से स्थापित करना और पीआईपी स्थापित करना है easy_install जैसा कि वर्णन किया गया है पिप के माध्यम से नवीनतम विज्ञप्ति

समस्या यह है कि इस तरह पाइप स्थापित करते समय, easy_install मैक ओएस प्रदान किया गया है easy_install पर /usr/bin/easy_install लेकिन यह लिखता है easy-install.pth पर फ़ाइल /Library/Python/2.7/site-packages/easy-install.pth और वह फ़ाइल मैक ओएस को पाइथन लाइब्रेरी प्रदान करती है।

इसके बाद उत्तरदायी स्थापित करना pip install ansible फिर रिपोर्ट करता है कि सेटअप टूल्स आवश्यकता मैक ओएस द्वारा पाइथन लाइब्रेरी प्रदान की जाती है /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
उत्तरदायी सेटअपtools की आवश्यकता है लेकिन एक संस्करण निर्दिष्ट नहीं करता है। एक अन्य आश्रित पैकेज, paramiko, setuptools> = 11.3 की आवश्यकता है, लेकिन यह पाइप के माध्यम से उत्तरदायी स्थापित करते समय जांच नहीं किया जा रहा है। जब आप उत्तरदायी चलाने की कोशिश करते हैं, हालांकि यह शिकायत करता है कि सेटअप उपकरण 1.1.6 है यह मैक ओएस के साथ प्रदान किए गए सेटअपटॉल्स का संस्करण है, और अब एसआईपी द्वारा संरक्षित है, इसलिए इसे अपग्रेड नहीं किया जा सकता है।

एसआईपी को अक्षम करने के बजाय, मैंने इसे अपने स्थानीय पायथन को अनइंस्टॉल करके ठीक किया है जैसा कि संकेत दिया गया है https://docs.python.org/2.7/using/mac.html#getting-and-installing-macpython और उसके बाद फिर से डाउनलोड और स्थापित करें।

यदि आप आरएम के बारे में चिंतित हैं, तो आप इसके बजाय एमवी कर सकते हैं
अनइंस्टॉल करने के लिए मैंने किया था

sudo rm -rf /Library/Python
sudo rm -rf /Applications/Python\ 2.7/
sudo rm /usr/local/bin/ansible  # executable
sudo rm /usr/local/bin/python*  # symlinks to /Library/Python/2.7
sudo rm /usr/local/bin/easy_install*
# and so on for references to /Library/Python/2.7 in /usr/local/bin

मैंने मैक ओएस एक्स के लिए 2.7.13 इंस्टॉलर पैकेज डाउनलोड किया https://www.python.org/downloads/ और इसे स्थापित किया।

इसने एक स्थानीय अजगर और पीआईपी स्थापित किया /Library/Frameworks/Python.framework/Versions/2.7 और symlinks में /usr/local/bin साथ ही साथ प्रीपेडिंग /Library/Frameworks/Python.framework/Versions/2.7 मेरे $ पाथ के लिए। यह सबकुछ मैक ओएस से अलग पुस्तकालयों से अलग रखता है /System/Library/Frameworks/Python.framework तथा /usr/bin ताकि मुझे मिल सके

which pip
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip

मैं इसके साथ जवाब स्थापित किया pip install ansible
फिर जब मैं दौड़ता हूं which ansible मुझे मिला

/Library/Frameworks/Python.framework/Versions/2.7/bin/ansible

और में pip list 

setuptools (28.8.0)
six (1.10.0)

और उत्तर अब मेरे लिए काम करता है क्योंकि मैक ओएस पायथन पुस्तकालयों को नए इंस्टॉल द्वारा संदर्भित नहीं किया जाता है।

ध्यान दें कि संस्थापक $ PATH सेटिंग के कारण, which python अब है /Library/Frameworks/Python.framework/Versions/2.7/bin/python तथा /usr/local/bin/python इस के लिए एक सिम्लिंक है।
यदि आप सिस्टम पायथन चाहते हैं तो आपको / usr / bin / python का उपयोग करना होगा या $ PATH को बदलना होगा


1
2018-03-05 12:11