如何在 WSL Ubuntu 18.04 上正确安装 Pipenv?

如何在 WSL Ubuntu 18.04 上正确安装 Pipenv?

我知道这听起来像是一个非常基本的问题,但我整天都在苦恼。我试图在 Windows Subsystem for Linux 中设置一个 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即使我的本地 bin 在我的 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 的安装似乎试图安装自己的 pip,从而破坏了系统 pip。我以为标志--user可以避免这种情况,但无论如何我还是被困住了,任何帮助都值得感激。

答案1

如果pipenv已安装成功后会出现如下的简短通知:

脚本 pipenv 和 pipenv-resolver 安装在 '~/.local/bin' 中,但该目录不在 PATH 中。请考虑将此目录添加到 PATH,或者,如果您希望隐藏此警告,请使用 --no-warn-script-location。

根据文档

这将执行用户安装,以防止破坏任何系统范围的软件包。如果安装后 pipenv 在您的 shell 中不可用,则需要将用户库的二进制目录添加到您的 PATH。

在 Linux 和 macOS 上,您可以通过运行 python -m site --user-base 并在末尾添加 bin 来找到用户基础二进制目录。例如,这通常会打印 ~/.local(其中 ~ 扩展为您的主目录的绝对路径),因此您需要将 ~/.local/bin 添加到您的 PATH。您可以通过修改 ~/.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它是为登录 shell 执行的。
  • ~/.bashrc(可选)在非登录 shell中添加这些行。

答案2

当我需要时,这对我来说很有用全局安装 Python 包进入/usr/local/bin/

sudo -H pip3 install pipenv

如果您正在考虑为用户全局安装它,请按照文档中的方法

pip3 install --user pipenv

这是我在 Ubuntu 18.0.4 机器上全局安装的位置:

$ sudo -H pip3 install pipenv
Collecting pipenv
  Downloading https://files.pythonhosted.org/packages/13/b4/3ffa55f77161cff9a5220f162670f7c5eb00df52e00939e203f601b0f579/pipenv-2018.11.26-py3-none-any.whl (5.2MB)
    100% |████████████████████████████████| 5.2MB 279kB/s 
Requirement already satisfied: pip>=9.0.1 in /usr/lib/python3/dist-packages (from pipenv)
Requirement already satisfied: setuptools>=36.2.1 in /usr/lib/python3/dist-packages (from pipenv)
Requirement already satisfied: virtualenv-clone>=0.2.5 in /usr/local/lib/python3.6/dist-packages (from pipenv)
Requirement already satisfied: virtualenv in /usr/local/lib/python3.6/dist-packages (from pipenv)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from pipenv)
Installing collected packages: pipenv
Successfully installed pipenv-2018.11.26
$ which pipenv
/usr/local/bin/pipenv
$ pipenv --version
pipenv, version 2018.11.26

答案3

我们遇到了和您一样的问题。您可以尝试以下方法,因为它对我们有用:

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

不要立即升级,因为需要更长的时间。

编辑 ~/.profile,就像上面 Biswapriyo 的回答一样。我们添加:

# 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 检查

更新:您也可以像这样使用它:

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

找到这个答案2018.11.26:pipenv 在创建虚拟环境时发出 Python 错误 #3363

答案4

在我的例子中,我在 Ubuntu WSL 中使用了 ZSH。我必须将 $HOME/.local/bin 添加到 ~/.zshrc 中的 PATH 并重新启动会话

相关内容