instalar - En OS X El Capitan no puedo actualizar un paquete de python que depende de las seis utilidades de compatibilidad NI puedo eliminar seis
python download (4)
Estoy tratando de usar raspado, pero tengo un problema.
de six.moves import xmlrpc_client como xmlrpclib
ImportError: no se puede importar el nombre xmlrpc_client
Entonces, probé pip install --upgrade six scrape
, pero:
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''
¡Esto funcionaría!
sudo pip install awsebcli --upgrade --ignore-installed six
Ambas respuestas anteriores no funcionan para mí. Finalmente, obtuve la solución de GitHub, aws / aws-cli , como se muestra a continuación.
En OS X, si ve un error con respecto a la versión de seis que vino con distutils en El Capitan, use la opción --ignore-installed:
$ sudo pip install awscli --ignore-installed six
No creo que sea un duplicado, pero en realidad Github .
NOTA: Según el paquete que instale, es posible que deba modificar el comando al que se hace referencia en la solución. En mi caso a continuación, estaba intentando configurar virtualenv y virtualwrapper. Si no puede instalar aws-cli o cualquier otro paquete, solo inserte eso en la secuencia de comandos
El núcleo del problema está vinculado al nuevo SIP de Apple que enviaron con El Capitán. Más specifically ,
Python de OS X 10.11 conserva su propia copia de seis, que es irreversible, debido a las modificaciones que Apple ha hecho en su distribución python. 1.4.1 no es el último, 1.10.0 es. También llega temprano en la ruta de importación de su python, por lo que normalmente anulará las versiones posteriores que instale.
Sugiero usar una python diferente por ahora. Python.org''s, o instalado a través de Homebrew, o Anaconda Python.
Hay una discusión increíblemente detallada sobre el Ask Ask Stack Exchange que cubre cómo los problemas con SIP se han identificado, abordado y evolucionado desde el lanzamiento original de El Capitan. Aunque me pareció fascinante, pasarás menos tiempo siguiendo las instrucciones a continuación que te llevaría a leerlo, así que te recomiendo que lo consultes DESPUÉS de que termines lo siguiente ...
Me encontré con el mismo error exacto al intentar actualizar VirtualEnv y VirtualEnvWrapper. Hubo varias sugerencias sobre ese hilo anterior, pero al final el más estable fue
- Aproveche el soporte integrado para sudo OPTION para especificar una variable de entorno HOME
$ 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.
- Aproveche las opciones de pip para forzar una actualización e ignore cualquier paquete preexistente
$ 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.
beejhuff@ignatius:~/mac_setup$ pip install --help | grep ignore-installed
-I, --ignore-installed Ignore the installed packages (reinstalling instead).
Primero, mi intento original y error:
$ 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''
La solución
Se requirió modificar mi comando de instalación de TRES maneras específicas:
- Tuve que agregar la bandera
-H
parasudo
- Tuve que agregar la opción
--upgrade
DESPUÉS del nombre del paquete que estaba actualizando (virtualenv
) - Tuve que usar el indicador
--ignore-installed
y especificar que el paquete desix
era el que debía ignorarse. - * Nota: el comando general es
$ sudo -H pip install <packagename> --upgrade --ignore-installed six
- reemplace<packagename>
con el paquete específico que necesita instalar
Ejemplo de trabajo final
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
2nd actualización 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
Arreglo rapido:
Acabo de solucionar lo que creo que era el mismo problema. Puede considerar intentar esto (sudo, si es necesario):
pip install scrape --upgrade --ignore-installed six
Github última instancia, Github es donde obtuve esta respuesta (y hay algunas sugerencias más que puedes considerar si esta no resuelve tu problema). También parece que este es un problema de El Capitán.
Además, esto técnicamente podría ser un duplicate . Pero la respuesta que surgió en la otra publicación fue la instalación de tu propio Python en lugar de confiar en osx Python por defecto, lo que me parece más laborioso.
Solución más larga y real:
Eventualmente me encontré con una situación en la que realmente necesitaba actualizar six
para instalar algunas otras bibliotecas, y en ese momento ignorarlas no era suficiente. La forma más fácil de actualizar seis para mí era no usar pip, sino descargar manualmente .tar.gz
de las seis páginas , descomprimir, mover al directorio de seis paquetes recién descomprimido y ejecutar la instalación manualmente (sudo, si es necesario) )
python setup.py install
Gracias a esta respuesta por la guía.