it-swarm.com.de

Unter OS X El Capitan kann ich kein python Paket aktualisieren, abhängig von den sechs Kompatibilitätsprogrammen NOR kann ich sechs entfernen

Ich versuche, Scrape zu verwenden, aber ich habe ein Problem.

aus six.moves importiere xmlrpc_client als xmlrpclib

ImportError: Der Name xmlrpc_client kann nicht importiert werden

Dann habe ich versucht pip install --upgrade six scrape, aber:

  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/basecommand.py", line 211, in main
status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 311, in run
root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 716, in uninstall
paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
  File "/Library/Python/2.7/site-packages/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 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: '/var/folders/3h/r_2cxlvd1sjgzfgs4xckc__c0000gn/T/pip-5h86J8-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.Egg-info'
34
R.hui

Schnellkorrektur:

Ich habe gerade das Problem gelöst, von dem ich denke, dass es dasselbe ist. Sie könnten dies versuchen (Sudo, falls erforderlich):

pip install scrape --upgrade --ignore-installed six

Github Ich habe letztendlich diese Antwort erhalten (und es gibt noch ein paar weitere Vorschläge, die Sie in Betracht ziehen können, wenn diese Ihr Problem nicht lösen). Es scheint auch, als sei dies ein El-Capitan-Problem.

Auch dies könnte technisch gesehen ein Duplikat sein . Aber die Antwort, die der andere Beitrag lieferte, war die Installation Ihres eigenen Python, anstatt sich auf das Standard-Python von osx zu verlassen, was mir mühsamer vorkommt.


Längerer, echter Fix:

Schließlich geriet ich in eine Situation, in der ich tatsächlich ein Upgrade von six durchführen musste, um einige andere Bibliotheken zu installieren. Zu diesem Zeitpunkt reichte es nicht aus, diese zu ignorieren. Der einfachste Weg, um ein Upgrade für Six durchzuführen, war für mich, Pip nicht zu verwenden, sondern stattdessen den .tar.gz Manuell von der Six-Seite herunterzuladen, zu dekomprimieren und in das neu dekomprimierte Six-Paketverzeichnis zu wechseln , und führen Sie die Installation manuell aus (Sudo, falls erforderlich):

python setup.py install

Vielen Dank an diese Antwort für die Anleitung.

52
stephenlechner

Ich denke nicht, dass dies ein Duplikat ist, aber tatsächlich dieses Problem wird hier in der Liste der Probleme mit dem GitHub-Repository behandelt .

HINWEIS: Je nachdem, welches Paket Sie installieren, müssen Sie möglicherweise den angegebenen Befehl ändern in der Lösung. In meinem Fall unten habe ich versucht, virtualenv und virtualwrapper einzurichten. Wenn Sie aws-cli oder ein anderes Paket nicht installieren können, fügen Sie das einfach in das Skript ein

Der Kern des Problems hängt mit Apples neuem SIP zusammen, das mit El Capitan ausgeliefert wurde. Mehr speziell ,

OS X 10.11s python behält seine eigene Kopie von sechs bei, die aufgrund von Änderungen, die Apple an ihrer python -Distribution vorgenommen hat, nicht entfernt werden kann. 1.4.1 ist nicht die neueste, 1.10.0 ist. Es kommt auch früh auf den Importpfad ihres Pythons, so dass es in der Regel spätere Versionen überschreibt, die Sie installieren.

Ich würde vorschlagen, vorerst ein anderes python zu verwenden. Python.org oder über Homebrew oder Anaconda Python installiert.

Es gibt eine nglaublich detaillierte Diskussion über Ask Different Stack Exchange , die beschreibt, wie die Probleme mit SIP seit der ursprünglichen Veröffentlichung von El Capitan identifiziert, behoben und weiterentwickelt wurden. Obwohl ich es faszinierend fand, werden Sie weniger Zeit damit verbringen, die folgenden Anweisungen zu befolgen, als Sie zum Lesen benötigen würden. Daher würde ich empfehlen, es zu überprüfen, NACHDEM Sie Folgendes beendet haben ...

Beim Versuch, VirtualEnv & VirtualEnvWrapper zu aktualisieren, ist genau derselbe Fehler aufgetreten. Es gab mehrere Vorschläge, die auf dem obigen Thread herumgetrampelt wurden, aber am Ende war das stabilste zu

  1. Nutzen Sie die integrierte Unterstützung für Sudo OPTION, um eine HOME-Umgebungsvariable anzugeben
$ man Sudo

  -H   The -H (HOME) option option sets the HOME environment variable 
        to the home directory of the target user (root by default) as specified 
        HOME environment variable depends on sudoers(5) settings.  By default, 
        Sudo will set HOME if env_reset or always_set_home are set, or if
        set_home is set and the -s option is specified on the command line.
  1. Nutzen Sie die Optionen von pip, um ein Upgrade zu erzwingen und vorhandene Pakete zu ignorieren
$ pip install --help | grep upgrade

  -U, --upgrade   Upgrade all specified packages to the newest available 
        version. This process is recursive regardless of whether a dependency 
        is already satisfied.

[email protected]:~/mac_setup$ pip install --help | grep ignore-installed

  -I, --ignore-installed  Ignore the installed packages (reinstalling instead).

Zuerst mein ursprünglicher Versuch & Fehler:

$ Sudo pip install virtualenv virtualenvwrapper

The directory '/Users/beejhuff/Library/Caches/pip/http' or its parent directory 
is not owned by the current user and the cache has been disabled. 
Please check the permissions and owner of that directory. If executing 
pip with Sudo, you may want Sudo's -H flag.

The directory '/Users/beejhuff/Library/Caches/pip' or its parent directory 
is not owned by the current user and caching wheels has been disabled. 
check the permissions and owner of that directory. If executing pip with 
Sudo, you may want Sudo's -H flag.

Collecting virtualenv
  Downloading virtualenv-15.0.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 335kB/s 
Collecting virtualenvwrapper
  Downloading virtualenvwrapper-4.7.1-py2.py3-none-any.whl
Collecting virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting stevedore (from virtualenvwrapper)
  Downloading stevedore-1.12.0-py2.py3-none-any.whl
Collecting pbr>=1.6 (from stevedore->virtualenvwrapper)
  Downloading pbr-1.8.1-py2.py3-none-any.whl (89kB)
    100% |████████████████████████████████| 92kB 362kB/s 
Collecting six>=1.9.0 (from stevedore->virtualenvwrapper)
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: virtualenv, virtualenv-clone, pbr, six, stevedore, virtualenvwrapper
  Running setup.py install for virtualenv-clone ... done
  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-8.1.0-py2.7.Egg/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.Egg/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.Egg/pip/req/req_set.py", line 726, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.Egg/pip/req/req_install.py", line 746, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.Egg/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.Egg/pip/utils/__init__.py", line 267, 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-GQL8Gi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.Egg-info'

Die Lösung

Mein Installationsbefehl musste auf DREI Arten geändert werden:

  1. Ich musste das -H Flag zu Sudo hinzufügen
  2. Ich musste die Option --upgrade NACH dem Namen des Pakets, für das ich ein Upgrade durchgeführt habe, hinzufügen (virtualenv)
  3. Ich musste das Flag --ignore-installed Verwenden und angeben, dass das Paket six ignoriert werden sollte.
  4. * Hinweis: Der allgemeine Befehl lautet $ Sudo -H pip install <packagename> --upgrade --ignore-installed six - Ersetzen Sie <packagename> Durch das zu installierende Paket

Letztes Arbeitsbeispiel

1st Upgrade virtualenv

$ Sudo -H pip install virtualenv --upgrade --ignore-installed six

Password:

Collecting virtualenv
  Using cached virtualenv-15.0.0-py2.py3-none-any.whl
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: virtualenv, six
Successfully installed six-1.4.1 virtualenv-15.0.0

2. Upgrade von virtualenvwrapper

$ Sudo -H pip install virtualenvwrapper --upgrade --ignore-installed six

Password:

  Downloading virtualenvwrapper-4.7.1-py2.py3-none-any.whl
Collecting six
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting virtualenv (from virtualenvwrapper)
  Downloading virtualenv-15.0.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 751kB/s 
Collecting virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting stevedore (from virtualenvwrapper)
  Downloading stevedore-1.12.0-py2.py3-none-any.whl
Collecting pbr>=1.6 (from stevedore->virtualenvwrapper)
  Downloading pbr-1.8.1-py2.py3-none-any.whl (89kB)
    100% |████████████████████████████████| 92kB 417kB/s 
Installing collected packages: virtualenv, virtualenv-clone, pbr, six, stevedore, virtualenvwrapper
  Running setup.py install for virtualenv-clone ... done
Successfully installed pbr-1.8.1 six-1.4.1 stevedore-1.12.0 virtualenv-15.0.0 virtualenv-clone-0.2.6 virtualenvwrapper-4.7.1

Beide vorherigen Antworten funktionieren bei mir nicht. Endlich habe ich die Lösung von GitHub, aws/aws-cli erhalten, wie unten auszugsweise dargestellt.

Wenn Sie unter OS X einen Fehler in Bezug auf die Version von 6 sehen, die mit distutils in El Capitan geliefert wurde, verwenden Sie die Option --ignore-installed:

$ Sudo pip install awscli --ignore-installed six
4
SparkAndShine

Das würde funktionieren !!

Sudo pip install awsebcli --upgrade --ignore-installed six
1
Gaurav Magan