pip install pickle 不工作 - 没有这样的文件或目录
Posted
技术标签:
【中文标题】pip install pickle 不工作 - 没有这样的文件或目录【英文标题】:pip install pickle not working - no such file or directory 【发布时间】:2017-09-18 21:51:24 【问题描述】: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
【问题讨论】:
这是什么版本的python? Python 2.7 和 3.4 自带 cPickle 看起来你的python
是 python3 。 pip
用于 python2。请安装pip3
......并使用pip3为Python3安装模块。
刚刚用版本更新问题,ctrl+f 表示“版本”
pip 和 pip3 有同样的问题
你为什么要使用 pip 安装cPickle
?它是 Python 标准库的一部分,因此要么已经安装(Python 2),要么选择 pickle
与 cPickle
是您不应该关心的实现细节(Python 3)。
【参考方案1】:
上网查了一下,发现了这个
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 在下面输入的 cmets,这个与上面的答案相似
from six.moves import cPickle
【讨论】:
(a) 为什么在复制和粘贴文本也能正常工作的情况下发布文本图片? (b) 你是在“互联网”上的什么地方找到这段文字的? 安迪的回答有效。我还发现你可以使用from six.moves import cPickle
来支持python2和python3
我没有在 Python 3.6.3 中使用import pickle
,而是使用了import _pickle as cPickle
,它成功了。谢谢:)【参考方案2】:
cPickle
是 Python 标准库的一部分;您不使用pip
安装它。在 Python 2 中,it comes installed with Python。在 Python 3 中,quoting the release notes 增加了重点:
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 端似乎出现了问题,导致源分发文件格式错误,从而导致您在此处看到的错误。因此,即使修复了此错误,您仍然会收到一个不同的错误,告诉您不要执行您正在尝试执行的操作。
【讨论】:
【参考方案3】:你可以使用:
pip install pickle-mixin
【讨论】:
以上是关于pip install pickle 不工作 - 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
pip install MySQL-python==1.2.5 不工作[重复]
pip install 在笔记本单元格中工作,但在脚本中不工作[重复]