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
答案 0 :(得分:11)
检查互联网,我发现了这个
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