web-dev-qa-db-ja.com

PipはUbuntu 16.04でエラーを指定します。また、環境が非アクティブ化されると、venvパッケージが表示されます

これはこの質問と同じですが、タイトルが間違っています。そして、症状はこの post で説明されているよりもいやらしい。

Ubuntu 14.04から16.04へのアップグレード-Penvは、venvが非アクティブ化されている場合でも、アクティブな仮想環境にインストールされているパッケージを表示します。

さらに、パッケージpipをインストールすると、次のエラーがスローされます。

The directory '/home/user/.cache/pip/http' or its parent directory is
not owned by the current user and the cache has been disabled. Please
check the permissions and owner of that directory. If executing pip
with Sudo, you may want Sudo's -H flag. The directory
'/home/user/.cache/pip' or its parent directory is not owned by the
current user and caching wheels has been disabled. check the
permissions and owner of that directory. If executing pip with Sudo,
you may want Sudo's -H flag.  

pip install <package_name>を実行すると、アクセス権エラーも発生します。pip install --user <package_name>でこれを回避できます。また、Sudoは-Hオプションを使用した場合にのみ上記のように機能します。

このエラーに関する洞察または可能な修正は素晴らしいでしょう!前もって感謝します!

エド

1
edlee

私は問題の答えを見つけました。これは、VirtualenvがSudoとともにインストールされ、pip/.cacheファイルがユーザーによって所有されているために発生します。いくつかのパッケージでは、Sudoへのアクセスが必要になります。以下は、問題と参照に関する情報です。このエラーの説明の下に馬鹿ガイドを追加しました。

  1. グローバルにインストールされたパッケージがpythonパスにあり、インストール要件と競合する場合、それらは無視され、アンインストールされません。
  2. グローバルにインストールされたパッケージがpythonパスにあり、インストール要件を満たしている場合、pipは何もせず、要件が満たされていることを報告します(グローバルパッケージが--system-site-packages virtualenv)。
  3. ユーザーサイトがpythonパスにないため、pipは--no-site-packages virtualenv(つまり、デフォルトの種類のvirtualenv)で--userインストールを実行しません。インストールは無意味です。
  4. --system-site-packages virtualenvでは、pipはvirtualenv site-packagesのパッケージと競合するパッケージをインストールしません。 --userのインストールにはsys.pathの優先順位がなく、意味がありません。

詳細はこちらをご覧ください https://pip.pypa.io/en/stable/user_guide/#user-installs

私の修正

  1. 〜/ user/.cache内のすべてのプロジェクトパッケージを削除しました。 「間違って」pip uninstall -r <path_to_project_requirements.txt>(必要に応じてN.B.でSudoをプレフィックス)をインストールした場所。

  2. Virtualenv Sudo pip uninstall virtualenvを削除しました

  3. pip --user install virtualenvを使用してvirtualenvをインストールします。これにより所有権の問題が停止します。また、Sudoを使用してグローバルにインストールする必要がないようにします。virtualenvラッパーも使用できます。

  4. プロジェクトディレクトリを作成します:mkdir <project>そしてそこに移動しますcd project

  5. virtualenv venvローカル環境フォルダーを作成して、パッケージを. venv/bin/activateにインストールします

  6. プロジェクト要件のインストールを続行します。

0
edlee