无法在Python 3.6中使用pip安装pickle。

49

我正在尝试运行以下代码:

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?


3
它不包含在标准库里吗?你为什么认为你没有它? - kbau
1
Pickle是标准库。如果您发现它未安装,该怎么办? - Alexander C
3
作为感谢您提供有用解决方案的表彰,请接受其中一个答案。 - sophros
我正在尝试相同的代码,但我的打印输出是[u'MMM],我不知道那是什么意思。 - user665997
7个回答

55

pickle 模块 长期以来一直是 Python 标准库的一部分,因此无需通过 pip 安装。我想知道您的 IDE 或命令行是否出现了某些混乱,导致它找不到 Python 安装路径。请检查您的 %PATH% 是否包含指向 Python 的路径(例如C:\Python36\或类似的路径),或者您的 IDE 是否正确检测到了 Python 安装的根路径。


43

您可以通过运行命令pip install pickle-mixin来安装pickle。 然后使用import pickle进行导入。 之后就可以正常使用了。


1
谢谢。这个解决方案对我有效。其他解决方案没有起作用。 - Ajay B

17

Pickle是Python 2和Python 3默认安装的模块。请参见标准库中的3.6.42.7

此外,为了证明我所说的是正确的,请尝试运行此脚本:

import pickle
print(pickle.__doc__)

这将打印出Pickle文档,展示其提供的所有函数(和更多内容)。

或者你可以启动集成的Python 3.6模块文档并在那里查看。

作为一个经验法则:如果您可以导入模块而不会产生错误,则表示已安装。

No matching distribution found for pickle的原因是因为通过pip不可用于包含的软件包的库,因为您已经拥有它们(昨天我尝试安装一个集成包时发现了这一点)。

如果没有错误运行但工作不如预期,我认为您可能在某个地方犯了一个错误(也许快速检查一下文档中使用的函数)。 Python非常详细地报告错误,所以我们通常知道是否有问题。


7
import pickle

intArray = [i for i in range(1,100)]
output = open('data.pkl', 'wb')
pickle.dump(intArray, output)
output.close()

快速测试您的pickle。pickle是Python标准库的一部分,因此默认情况下可用。


7

我遇到了类似的错误,这是我找到的解决方法。

我的环境详细信息如下:我所遵循的步骤

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
>>>

所以,在Python v3.7中,pip install pickle是不需要的。

这是确认Pickle已安装的好方法,但这解决了你遇到的错误吗? - Tls Chris
1
它解决了我的问题,因为我能够成功地执行我的程序,并且它按预期创建了两个.pkl文件。 - SanthoshKumarBelman

4
$ 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/


3

$ pip install pickle-mixin

请尝试在Anaconda提示符或PyCharm终端中运行此命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接