web-dev-qa-db-ja.com

pip install pickleが動作しない-そのようなファイルまたはディレクトリはありません

Ubuntu 16.04 LTS、cipkleをpipでインストールしようとしています。少し検索しましたが、まだ有用なものは見つかりませんでした。

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

インターウェブで確認すると、これが見つかりました

enter image description here

Python 2.xの一般的なパターンは、PickleやcPickleなど、C拡張機能として実装されたオプションのアクセラレーションバージョンとともに、モジュールの1つのバージョンを純粋なPythonで実装することです。

これにより、アクセラレーションバージョンをインポートして、これらのモジュールの各ユーザーの純粋なPythonバージョンにフォールバックします。Python 3.0では、アクセラレーションバージョンは純粋なPythonバージョン。

ユーザーは常に標準バージョンをインポートする必要があります。標準バージョンは、高速バージョンをインポートしようとし、純粋なPythonバージョンになります。pickle/ cPickleペアはこの処理を受けました。プロファイルモジュールは3.1。StringIOモジュールはioモジュールのクラスに変わりました。

これは、Python3ではライブラリとして提供されることを意味します...

import _pickle as cPickle
12
Andy K

cPickleは、Pythonの標準ライブラリの一部です。 pipと共にインストールすることはありません。 In Python 2、 Pythonと共にインストールされます 。In Python 3、 リリースノートを引用 追加の強調:

Python 2.xの一般的なパターンは、PickleやcPickleなど、C拡張機能として実装されたオプションのアクセラレーションバージョンとともに、モジュールの1つのバージョンを純粋なPythonで実装することです。加速バージョンをインポートして、これらのモジュールの各ユーザーの純粋なPythonバージョンにフォールバックします。In Python = 3.0、加速バージョンは、純粋なPythonバージョンの実装の詳細と見なされます。ユーザーは常に標準バージョンをインポートする必要があります。これは、加速バージョンをインポートし、純粋なPython version。pickle/cPickleのペアはこの処理を受けました。

cpickleをpipでインストールしようとする特定のケースでは、一部のPythonistaは、これが間違っていることを人々に通知することを決定し、cpickleプロジェクトを登録しました。ライブラリモジュール)、それにsetup.pyそれはエラー "Package 'cpickle' must not be downloaded from pypi "。ただし、パッケージの作成またはソース配布ファイルの不正な原因となったPyPIの最後のいずれかで何らかの問題が発生したように見えるため、ここで表示されるエラーが発生しました。あなたはまだあなたがしようとしていることをしないように告げる別のエラーを受け取ります。

5
jwodder