我知道这听起来像是一个非常基本的问题,但我整天都在苦恼。我试图在 Windows Subsystem for Linux 中设置一个 python 环境,但当我安装 pipenv 时,一切似乎都崩溃了。
重现步骤:
从 Windows 商店全新安装 Ubuntu 18.04
sudo apt update && sudo apt upgrade
sudo apt install python3-pip
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
更新:您也可以像这样使用它:
$pipenv check --python=`which python3.7`
答案4
在我的例子中,我在 Ubuntu WSL 中使用了 ZSH。我必须将 $HOME/.local/bin 添加到 ~/.zshrc 中的 PATH 并重新启动会话