pip install pickle not working - 没有这样的文件或目录

inv*_*pid 7 python linux bash pip python-3.x

Ubuntu 16.04 LTS,试图用pip安装cpickle.我搜索了一下,还没找到任何有用的东西.

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.
Run Code Online (Sandbox Code Playgroud)

故障排除步骤

# 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
Run Code Online (Sandbox Code Playgroud)

And*_*y K 12

检查互联网,我发现了这个

在此输入图像描述

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

这会导致导入加速版本的负担,并在这些模块的每个用户上回退到纯Python版本.在Python 3.0中,加速版本被认为是纯Python版本的实现细节.

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

这意味着在Python3中它作为一个库...

import _pickle as cPickle
Run Code Online (Sandbox Code Playgroud)

  • (a)为什么在复制和粘贴文本时也会发布文本图片?(b)你在"互联网"上的确切地找到了这个文本吗? (2认同)
  • 安迪的回答很有效.我还发现你可以使用`from six.moves import cPickle`来支持python2和python3 (2认同)

jwo*_*der 5

cPickle是Python标准库的一部分;您不使用进行安装pip。在Python 2中,它随Python一起安装。在Python 3中,重点引用发行说明

在Python 2.x中,一种常见的模式是使用纯Python实现模块的一个版本,并作为C扩展实现可选的加速版本。例如,泡菜和cPickle。这给这些模块的每个用户都带来了导入加速版本并依靠纯Python版本的负担。在Python 3.0中,加速版本被视为纯Python版本的实现细节。用户应始终导入标准版本,该标准版本将尝试导入加速版本并退回到纯Python版本。泡菜/ cPickle对接受了这种处理。

在尝试cpickle使用pip 进行安装的特定情况下,一些Pythonista决定通知人们这是错误的事情,因此注册了该cpickle项目(以及其他许多以标准库模块命名的项目),并且给了它一个setup.py什么都不做,退出并显示错误“ Package 'cpickle' must not be downloaded from pypi”。但是,无论是在创建软件包时还是在PyPI的一端,似乎都出了一些问题,导致源分发文件格式错误,从而导致您在此处看到错误。因此,即使该错误已解决,您仍然会收到另一个错误,告诉您不要执行尝试执行的操作。