Ubuntu 16.04 LTS, tratando de instalar cpickle con pip. I'he buscado un poco, haven't encontrado nada útil todavía.
PYTHONPATH no está configurado.
user@hostname:~$ sudo -H pip3 install cpickle
Collecting cpickle
Using cached cpickle-0.5.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.5/tokenize.py", line 454, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-build-wn926hef/cpickle/setup.py'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-wn926hef/cpickle/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-q46tq1l8/cpickle/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
# version info
user@hostname:~$ python --version
Python 2.7.12
user@hostname:~$ python3 --version
Python 3.5.2
# I don't think cache is the problem
rm -rf ~/.cache/
sudo -H pip install cpickle --no-cache-dir # same problem
sudo -H pip3 install cpickle --no-cache-dir # same problem
Buscando en internet, he encontrado esto
Un patrón común en Python 2.x es tener una versión de un módulo implementada en Python puro, con una versión acelerada opcional implementada como una extensión de C; por ejemplo, pickle y cPickle.
Esto pone la carga de importar la versión acelerada y volver a la versión pura de Python en cada usuario de estos módulos. En Python 3.0, las versiones aceleradas se consideran detalles de implementación de las versiones puras de Python.
Los usuarios siempre deben importar la versión estándar, que intenta importar la versión acelerada y vuelve a la versión pura de Python. El par pickle / cPickle recibió este tratamiento. El módulo profile está en la lista para 3.1. El módulo StringIO se ha convertido en una clase en el módulo io.
Lo que significa que en Python3 viene como una biblioteca ...
import _pickle as cPickle
cPickle forma parte de la biblioteca estándar de Python; no se instala con pip
. En Python 2, viene instalado con Python. En Python 3, citando las notas de la versión con énfasis añadido:
Un patrón común en Python 2.x es tener una versión de un módulo implementada en Python puro, con una versión acelerada opcional implementada como una extensión de C; por ejemplo, pickle y cPickle. Esto pone la carga de importar la versión acelerada y volver a la versión pura de Python en cada usuario de estos módulos. En Python 3.0, las versiones aceleradas se consideran detalles de implementación de las versiones puras de Python. Los usuarios siempre deben importar la versión estándar, que intenta importar la versión acelerada y vuelve a la versión pura de Python. El par pickle / cPickle recibió este tratamiento.
En el caso específico de intentar instalar cpickle
con pip, algún Pythonista decidió informar a la gente de que esto era lo incorrecto, así que registró el proyecto cpickle
(junto con muchos otros con nombres de módulos de librerías estándar) y le dio un setup.py
que no haría otra cosa que salir con el error "Package 'cpickle' must not be downloaded from pypi
". Sin embargo, algo parece haber ido mal, ya sea en la creación del paquete o en PyPI, que ha causado que el archivo fuente de distribución esté malformado, dando lugar al error que se ve aquí. Por lo tanto, incluso si este error se solucionara, seguiría recibiendo un error diferente que le indicaría que no haga lo que está intentando hacer.