web-dev-qa-db-ja.com

WSL Ubuntu 18.04にPipenvを正しくインストールする方法

私はこれがかなり基本的な質問のように聞こえることを知っていますが、私は一日の終わりまでずっと自分自身を苛立たせています。 LinuxのWindowsサブシステムでpython環境を設定しようとしています。pipenvをインストールすると、すべてが壊れるようです。

再現する手順:

  1. WindowsストアからのUbuntu 18.04の新規インストール

  2. Sudo apt update && Sudo apt upgrade

  3. Sudo apt install python3-pip

  4. pip3 install --user pipenv

Pipは、私が期待するすべてを出力し、エラーはありません。pipenvがインストールされているように見えます。

pipenvを使用しようとすると、pipenv: command not foundローカルビンがPATHにあるにもかかわらず

それよりも悪いことに、pipは壊れており、pipを使用しようとすると次のようになります。

Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

そのため、pipenvのインストールが独自にインストールしようとすることでシステムピップを台無しにしたようです。 --userフラグはそれを避けたでしょうが、とにかく行き詰まっています。

4
byake

pipenv installed が正常に終了すると、次のような短い通知が表示されます。

スクリプトpipenvおよびpipenv-resolverは、PATH上にない「〜/ .local/bin」にインストールされます。このディレクトリをPATHに追加することを検討してください。または、この警告を抑制したい場合は、-no-warn-script-locationを使用してください。

documentation によると:

これは、システム全体のパッケージの破壊を防ぐためにユーザーインストールを行います。インストール後、シェルでpipenvを使用できない場合は、ユーザーベースのバイナリディレクトリをPATHに追加する必要があります。

LinuxおよびmacOSでは、python -m site --user-baseを実行し、最後にbinを追加することで、ユーザーベースのバイナリディレクトリを見つけることができます。たとえば、これは通常〜/ .localを出力します(ホームディレクトリへの絶対パスに展開された〜を使用)、PATHに〜/ .local/binを追加する必要があります。〜/ .profileを変更することで、PATHを永続的に設定できます。

これに従ってください:

  • ~/.profileファイルを開きます。
  • そのファイルに~/.local/binパスが存在するかどうかを確認します。
  • そうでない場合は、次の行を追加します
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
  • ログインシェルに対してbash --loginが実行されるため、ログインモードに対して~/.profileを実行します。
  • 必要に応じて、非ログインシェルのそれらの行を~/.bashrcに追加します。
4
Biswapriyo

私の場合、pipenvインストール後のログアウト/ログインが役立ちました。これにより、.profileファイルのPATHの変更が適用されます。

0
dux2

あなたと同じように問題が発生しました。それは私たちのために働くので、あなたは以下を試すかもしれません:

$ Sudo apt update
$ Sudo apt install software-properties-common
$ Sudo add-apt-repository ppa:deadsnakes/ppa

まだアップグレードしないでください。時間がかかります。

上記のBiswapriyoの回答のように〜/ .profileを編集します。私たちのものを追加します:

# Add home user directory to path
export PATH="/home/$USER/.local/bin:$PATH"

次に、以下のコマンドを実行します。

$ Sudo apt install python3.7 python3-pip -y
$ python3.7 -m pip install --user pip
$ python3.7 -m pip install --user pipenv

次に、次のようなコマンドを実行します。

$ python3.7 -m pipenv check

python3.7 -m pipenv check

更新:次のように使用することもできます:

$pipenv check --python=`which python3.7`

2018.11.26:virtualenvを作成するときにpipenvがpythonエラーを生成する#336 でこの回答が見つかりました

0
Ricardo