安装 pipenv 导致 pip3 无法使用

Posted

技术标签:

【中文标题】安装 pipenv 导致 pip3 无法使用【英文标题】:installation of pipenv causes pip3 unusable 【发布时间】:2018-12-15 23:15:33 【问题描述】:

我安装了pipenv 使用 $ pip3 install pipenv 这给了我错误ImportError: cannot import name 'main' 为了解决这个错误我followed these instructionsudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall 现在pip3 命令正在终端上运行。 现在我使用pip3 install pipenv 安装pipenv 它安装成功,但是当我尝试在终端上执行 pipenv 时,它给了我 pipenv: command not found 此时pip3 也给出ImportError: cannot import name 'main' error 为了解决这个问题我followed these instruction

PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"

此时,pipenv 点工作,但 pip3 不工作。我怎样才能使 pip3pipenv 同时工作? p>

另外,我似乎搞砸了我的 pipenv 设置,现在虚拟环境默认创建在 /home/sysadmin 而不是我用来创建虚拟环境的位置/home/sysadmin/Desktop/helloworld

【问题讨论】:

【参考方案1】:

问题是由于在安装 pipenv 时覆盖了系统管理的 pip 版本。通过按顺序恢复系统管理的 pip,您执行了正确的第一步:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

完成后,请务必注意,由于 pip 冲突,pipenv 可能无法在全局级别安装。您可以在用户级别安装 pipenv:

pip install --user pipenv

这应该在 /home/username/.local 的用户级别安装 pipenv,这样它就不会与 pip 的全局版本冲突。就我而言,在运行“--user”开关后仍然无法正常工作,所以我再次运行了更长的“修复我搞砸的东西”命令来准备环境:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

然后执行以下操作:

mkdir /home/username/.local ...如果它不存在

export PYTHONUSERBASE=/home/username/.local

确保导出成功(在此过程中咬了我一次):

echo $PYTHONUSERBASE

然后,我运行了pip install --user pipenv,一切都很好。然后我可以从 CLI 运行 pipenv,它不会覆盖全局/系统管理的 pip 模块。当然,这是特定于用户的,因此您要确保以这种方式安装 pipenv,同时以您希望使用 pipenv 的用户身份工作。

参考资料:

https://pipenv.readthedocs.io/en/latest/diagnose/#no-module-named-module-name https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv https://pip.pypa.io/en/stable/user_guide/#user-installs

【讨论】:

感谢您的回答,但在出现此问题后我停止使用 pipenv,目前正在使用 virtualenv 和 virtualenvwrapper 创建我的虚拟环境。希望您的回答对下一个磕磕绊绊的用户有用。 既然我将 pipenv 用于生产,那么在某个用户下安装 pipenv 以后不会给我在服务器上安装的所有权限带来问题吗?

以上是关于安装 pipenv 导致 pip3 无法使用的主要内容,如果未能解决你的问题,请参考以下文章

pipenv使用

pipenv 无法安装软件包

安装pipenv

Pipenv无法在远程服务器(Heroku)上安装boto3

Python包和版本管理的最好工具----pipenv

python虚拟环境--pipenv的使用