pip install pickle not working - そのようなファイルまたはディレクトリがありません。

Ubuntu 16.04 LTSで、cpickleをpipでインストールしようとしています。cpickleを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
質問へのコメント (5)
ソリューション

ネットで調べたら、こんなのがあった。

[ここに画像の説明を入力]1]。

Python2.xでよくあるパターンは、純粋なPythonで実装されたモジュールの1つのバージョンと、C拡張として実装されたオプションの高速化バージョンを持つことです。

例えば、pickleとcPickleです。これは、これらのモジュールの各ユーザに、高速化バージョンをインポートし、純粋なPythonバージョンにフォールバックするという負担を強いることになります。Python 3.0では、高速化バージョンは純粋なPythonバージョンの実装の詳細とみなされます。

ユーザは常に標準バージョンをインポートすべきです。標準バージョンは高速化バージョンをインポートしようとし、純粋なPythonバージョンにフォールバックします。pickle / cPickle のペアはこの扱いを受けました。profileモジュールは3.1のリストにあります。StringIO モジュールは io モジュールのクラスになりました。

つまり、Python3ではライブラリとして提供されます。

import _pickle as cPickle
解説 (3)

cPickle`はPythonの標準ライブラリの一部です。 Python 2では、Pythonと一緒にインストールされます。 Python 3 では、リリースノートを引用して 強調しています:

Python 2.xでよくあるパターンは、純粋なPythonで実装されたモジュールの1つのバージョンと、C拡張として実装されたオプションの高速化バージョンを持つことです。例えば、pickle と cPickle です。これは、これらのモジュールの各ユーザに、高速化されたバージョンをインポートし、純粋な Python バージョンにフォールバックするという負担を強いることになります。**Python 3.0では、高速化バージョンは純粋なPythonバージョンの実装の詳細とみなされます。ユーザーは常に標準バージョンをインポートすべきです。標準バージョンは高速化バージョンをインポートしようとし、純粋なPythonバージョンにフォールバックします。

cpickleをpipでインストールしようとした場合、あるPythonistaはそれが間違ったことであることを知らせようと考え、cpickleプロジェクトを登録し(標準ライブラリモジュールにちなんだ他の多くのプロジェクトと一緒に)、setup.py`を与えました。 しかし、パッケージの作成時か、PyPI側で何かがうまくいかず、ソース配布ファイルが不正な形になり、このようなエラーになっているようです。 そのため、このエラーが修正されたとしても、あなたが行おうとしていることを行うなという別のエラーが表示されます。

解説 (0)