pip install pickle 不工作 - 没有这样的文件或目录

新手上路,请多包涵

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

原文由 invapid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

上网查了一下,发现了这个

在此处输入图像描述

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

这将导入加速版本和退回到这些模块的每个用户的纯 Python 版本的负担。在 Python 3.0 中,加速版本被视为纯 Python 版本的实现细节。

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

这意味着在 Python3 中它作为一个库出现……

 import _pickle as cPickle

更新

正如 Invapid 在下面的评论中所说,这与上面的答案相似

from six.moves import cPickle

原文由 Andy K 发布,翻译遵循 CC BY-SA 4.0 许可协议

cPickle 是 Python 标准库的一部分;您不要使用 pip 安装它。在 Python 2 中, 它随 Python 一起安装。在 Python 3 中, 引用发行说明 并特别强调:

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

在尝试使用 pip 安装 cpickle 的特定情况下,一些 Pythonista 决定通知人们这样做是错误的,因此注册了 cpickle 项目(以及许多其他名为在标准库模块之后)并给它一个 setup.py 只会退出错误“ Package 'cpickle' must not be downloaded from pypi ”。但是,在创建包或 PyPI 端似乎出现了问题,导致源分发文件格式错误,从而导致您在此处看到的错误。因此,即使修复了这个错误,你仍然会得到一个不同的错误,告诉你不要做你想做的事情。

原文由 jwodder 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题