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

时间:2017-04-21 19:18:06

标签: python linux bash python-3.x pip

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.

疑难解答步骤

# 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

3 个答案:

答案 0 :(得分:11)

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

enter image description here

  

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

     

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

     

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

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

import _pickle as cPickle

答案 1 :(得分:4)

cPickle是Python标准库的一部分;你没有用pip安装它。在Python 2中,it comes installed with Python。在Python 3中,quoting the release notes更加强调:

  

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的最终导致源分发文件格式错误时,似乎出现了问题,导致您在此处看到错误。因此,即使修复了这个错误,你仍然会得到一个不同的错误,告诉你不要做你想要做的事情。

答案 2 :(得分:3)

您可以使用:

pip install pickle-mixin