PIP安装泡菜不工作 – 没有这样的文件或目录

Ubuntu 16.04 LTS,试图用pip安装cpickle。 我查了一下,还没有find有用的东西。

PYTHONPATH没有设置。

错误信息

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 

检查interweb,我发现这一点

在这里输入图像描述

Python 2.x中的一个常见模式是在纯Python中实现一个模块版本,并将可选的加速版本实现为C扩展; 例如,泡菜和cPickle。

这导致了加载版本的导入以及这些模块的每个用户的纯Python版本的负担。 在Python 3.0中,加速版本被认为是纯Python版本的实现细节。

用户应该总是导入标准版本,该版本试图导入加速版本并回退到纯Python版本。 pickle / cPickle对接受了这种治疗。 配置文件模块在3.1的列表中。 StringIO模块已经变成了io模块中的一个类。

这意味着在Python3它来作为一个图书馆…

 import _pickle as cPickle 

cPickle是Python标准库的一部分; 你不用pip安装它。 在Python 2中, 它随Python一起安装 。 在Python 3中, 引用发行说明并加入了重点:

Python 2.x中的一个常见模式是在纯Python中实现一个模块版本,并将可选的加速版本实现为C扩展; 例如,泡菜和cPickle。 这导致了加载版本的导入以及这些模块的每个用户的纯Python版本的负担。 在Python 3.0中,加速版本被认为是纯Python版本的实现细节。 用户应该总是导入标准版本,该版本试图导入加速版本并回退到纯Python版本。 pickle / cPickle对接受了这种治疗。

在试图用pip安装cpickle的特定情况下,一些Pythonista决定通知人们这是错误的事情,因此注册了cpickle项目(以及以标准库模块命名的许多其他项目),并给它一个setup.py这将无能为力,只是退出与错误“ Package 'cpickle' must not be downloaded from pypi ”。 然而,在创建软件包或者在PyPI的结尾导致源分布文件格式不正确,导致你在这里看到的错误,似乎出现了错误。 因此,即使这个错误得到解决,你仍然会得到一个不同的错误,告诉你不要做你想做的事情。