簡體   English   中英

無法 pip 在 python 3.6 中安裝 pickle

[英]Not able to pip install pickle in python 3.6

我正在嘗試運行以下代碼:

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模塊都是 Python 標准庫的一部分,因此無需通過pip安裝它。 我想知道您的IDE或命令行是否沒有以某種方式搞砸以至於找不到python安裝路徑。 請檢查您的%PATH%包含 python 的路徑(例如C:\\Python36\\或類似的東西),或者您的 IDE 是否正確檢測到安裝 Python 的根路徑。

您可以通過運行命令pip install pickle-mixin 繼續使用import pickle導入它。 然后就可以正常使用了。

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 的錯誤信息非常豐富,因此我們通常知道是否有問題。

import pickle

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

快速測試你的泡菜。 pickle是標准 python 庫的一部分,默認情況下可用。

我有一個類似的錯誤,這就是我發現的。

我的環境詳細信息如下:我最后遵循的步驟

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

$ pip 安裝 pickle-mixin

嘗試在 anaconda 提示符或 pycharm 終端中運行此命令

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM