无法在 python 3.6 中安装 pickle
Posted
技术标签:
【中文标题】无法在 python 3.6 中安装 pickle【英文标题】:Not able to pip install pickle in python 3.6 【发布时间】:2018-07-06 18:32:28 【问题描述】:我正在尝试运行以下代码:
import bs4 as bs
import pickle
import requests
import lxml
def save_sp500_tickers():
resp = requests.get("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies")
soup = bs.BeautifulSoup(resp.text, "html5lib")
table = soup.find("table", "class" : "wikitable sortable")
# print(soup)
# print(soup.table)
tickers = []
for row in table.findAll("tr")[1:]:
ticker = row.findAll("td")[0].text
tickers.append(ticker)
with open("sp500tickers.pickle","wb") as f:
pickle.dump(tickers, f)
print(tickers)
# return tickers
# save_sp500_tickers()
它没有抛出任何错误,但我意识到没有安装 pickle 模块。 我尝试通过 pip 安装它并收到以下错误:-
D:\py_fin>pip install pickle
Collecting pickle
Could not find a version that satisfies the requirement pickle (from versions:
)
No matching distribution found for pickle
我们如何在python 3.6(32位)中安装pickle?
【问题讨论】:
标准库中没有包含吗?是什么让你认为你没有它? Pickle 在标准库中。怎么发现没有安装? @satyaki:作为对有用解决方案的感谢,请接受其中一个答案。 我正在尝试相同的代码,但我的打印输出是 [u'MMM] idk 这是什么意思 【参考方案1】:pickle
module 长期以来一直是 Python 标准库的一部分,因此无需通过pip
安装它。我想知道您的IDE或命令行是否以某种方式搞砸了,以至于找不到python安装路径。请检查您的 %PATH%
是否包含 python 的路径(例如 C:\Python36\
或类似的东西),或者您的 IDE 是否正确检测到安装 Python 的根路径。
【讨论】:
【参考方案2】:您可以通过运行命令pip install pickle-mixin
来安装pickle。
继续使用import pickle
导入它。
这样就可以正常使用了。
【讨论】:
谢谢。此解决方案对我有用。其他解决方案无效。【参考方案3】:Pickle 是默认为 Python 2 和 Python 3 安装的模块。请参阅3.6.4 和2.7 的标准库。
另外为了证明我说的是正确的尝试运行这个脚本:
import pickle
print(pickle.__doc__)
这将打印出 Pickle 文档,向您展示它提供的所有功能(以及更多功能)。
或者您可以启动集成的 Python 3.6 模块文档并在那里查看。
根据经验:如果您可以导入模块而不会产生错误,那么它就会被安装
No matching distribution found for pickle
的原因是因为包含包的库不能通过 pip 获得,因为您已经拥有它们(我昨天在尝试安装集成包时发现了这一点)。
如果它运行时没有错误,但没有按预期工作,我会认为您在某处犯了错误(可能快速检查您在文档中使用的功能)。 Python 的错误信息非常丰富,因此我们通常知道是否有问题。
【讨论】:
【参考方案4】:import pickle
intArray = [i for i in range(1,100)]
output = open('data.pkl', 'wb')
pickle.dump(intArray, output)
output.close()
快速测试你的泡菜。 pickle 是标准 python 库的一部分,默认可用。
【讨论】:
【参考方案5】:我遇到了类似的错误,这是我发现的。
我的环境详细信息如下:我最后遵循的步骤
c:\>pip --version
pip 20.0.2 from c:\python37_64\lib\site-packages\pip (python 3.7)
C:\>python --version
Python 3.7.6
根据文档,显然,python 3.7 已经有了 pickle 包。所以它不需要任何额外的下载。我检查了以下命令以确保它正常工作。
C:\Python\Experiements>python
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>>
所以,pip install pickle
肯定不需要 python v3.7
【讨论】:
这是确认安装了 pickle 的好方法,但这是否解决了您遇到的错误? 它确实解决了我的问题,因为我能够成功执行我的程序,并且它已按预期创建了两个 .pkl 文件。【参考方案6】:$ pip install pickle5
import pickle5 as pickle
pb = pickle.PickleBuffer(b"foo")
data = pickle.dumps(pb, protocol=5)
assert pickle.loads(data) == b"foo"
此包向后移植 Python 3.8.3 中 pickle 模块中添加的所有功能和 API,包括 PEP 574 添加的内容。它应该适用于 Python 3.5、3.6 和 3.7。
基本用法和pickle模块差不多,只是要导入的模块是pickle5:
https://pypi.org/project/pickle5/
【讨论】:
以上是关于无法在 python 3.6 中安装 pickle的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 的 Python 3.6 中安装 mysqlclient
无法在 Python 3.6 中使用 _pickle 加载 Python 2.x .dat 文件 [重复]