Python - pickleファイルの異なるPython環境への変換
2022-02-20 07:43:38
Python - pickleファイルの異なるPython環境への変換
pickleファイルを読み込む際、python2環境から読み込むと、pickleライブラリがpython2に格納されているのかpython3に格納されているのかが最初分からないため、エラーが発生します。
import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())
トレースバック (最も最近の呼び出し):
ファイル "", 行 1, in
ファイル "/usr/lib/python2.7/pickle.py", 行 1382, in loadsreturn Unpickler(file).load()
ファイル "/usr/lib/python2.7/pickle.py", 行 858, in load
ディスパッチ キー
ファイル "/usr/lib/python2.7/pickle.py", 行 886, in load_proto
raise ValueError, "サポートされていない pickle プロトコル: %d" % proto
ValueError: pickleプロトコルがサポートされていません。3
その理由は
test.pickle
はpython3環境で生成されるため、python2での読み込みと互換性がありません。
解決策
#! /usr/bin/env python3
import pickle
import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())
pickle.dump(w, open("testpkl_py2.pkl","wb"), protocol=2)
python2環境での読み込み
testpkl_py2.pkl
で、動作します。
関連
-
TensorFlowのエラー:ハッシュ化できない型:'numpy.ndarray'エラー
-
undefinedAttributeError: 'dict_values' オブジェクトに 'translate' 属性がない エラーは解決されました。
-
Resolve "ImportError: cannot import name 'imresize'"."
-
[Python 標準ライブラリ] math--math 関数
-
Python Hashmap/Dictionary 使用ガイド
-
Python辞書
-
TypeError: バイトライクオブジェクトで文字列パターンを使用できない
-
Python error TypeError: 'type' object is not subscriptable
-
TypeError: -: 'list' および 'list' のオペランド型が未サポート 問題解決
-
ValueError: 解凍するために1つ以上の値が必要です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ImportError: 名前 '_validate_lengths' をインポートできない。
-
Python エラー: int() の引数は文字列、バイトのようなオブジェクト、または数値でなければならず、 'list' ではありません。
-
AttributeError: 'NoneType' オブジェクトには 'group' という属性がありません。
-
Python max()関数
-
pythonのstring()モジュール
-
Pythonのsum関数でTypeError: unsupported operand type(s) for +: 'int' and 'list' エラーを解決する。
-
Python で実行 TypeError: + でサポートされていないオペランド型: 'float' および 'str'.
-
Solve UnicodeDecodeError: 'ascii' codec can't decode byte 0xba in position 31: ordinal not in range(128)
-
Pythonです。相対インポート 相対パス ValueError: パッケージ以外での相対インポートの試み
-
[解決済み] です。TypeError: read() missing 1 required positional argument: 'filename'.