【发布时间】:2019-12-12 13:45:43
【问题描述】:
我正在尝试在 MBP (10.13.15) 上引入单独的 Python 版本,但我正式迷失了方向。
我已经成功地为 Python 3.7.4 创建了一个 pyenv 和一个 virtualenv。
但是,我遇到了使用 pyenv 和 virtualenv 在特定 Python 版本中安装的问题,这似乎与我的系统和其他路径没有隔离。我试图用我从下面的终端返回的一些命令来举例说明这一点。
例如,我正在尝试安装 awsclieb(用于弹性 beanstalk 的 AWS 命令行)。但是相应的问题让我觉得我的 PATH 出现了其他问题,其他安装将继续困扰我。
我有一个 pyenv/virtualenv:
(my-virtualenv-3.7.4) Peters-MacBook-Pro-4:~ peter$ python --version
返回:Python 3.7.4
pyenv 垫片:
(my-virtualenv-3.7.4) Peters-MacBook-Pro-4:~ peter$ which python
返回:/Users/peter/.pyenv/shims/python
但现在问题来了
pip install awsebcli
将返回重要警告:
The script chardetect is installed in '/Users/peter/.local/bin' which is not on PATH.
所以我在想,好吧 install 在我的 pyenv 中并没有被隔离,当我检查时:
eb --version
返回的是我默认系统(2.7.1)中安装的版本,而不是我的pyenv(3.7.4):
EB CLI 3.14.6 (Python 2.7.1)
我的解决方法是指定 pip 的 pyenv/virtualenv 位置:
/Users/peter/.pyenv/versions/3.7.4/envs/my-virtualenv-3.7.4/bin/pip install awsebcli
此安装没有 PATH 警告,这让我认为显式路径可以纠正非隔离问题。
然而,
eb --version
仍然返回,我的系统安装:
EB CLI 3.14.6 (Python 2.7.1)
但是,如果我明确路径:
(my-virtualenv-3.7.4) Peters-MacBook-Pro-4:~ peter$ /Users/peter/.pyenv/versions/3.7.4/envs/my-virtualenv-3.7.4/bin/eb --version
我的新安装被退回:
EB CLI 3.15.3 (Python 3.7.4)
我真正迷失的地方是我的 virtualenv 中的 pip 点的非显式版本
(my-virtualenv-3.7.4) Peters-MacBook-Pro-4:~ peter$ pip --version
返回:
pip 19.0.3 from /Users/peter/.pyenv/versions/3.7.4/envs/my-virtualenv-3.7.4/lib/python3.7/site-packages/pip (python 3.7)
(my-virtualenv-3.7.4) Peters-MacBook-Pro-4:~ peter$ which pip
返回:
/Users/peter/.pyenv/shims/pip
为什么 pip 在 pyenv 中似乎是孤立的(通过 --version 和 which 命令),但 pip 却安装在我的系统环境中?
【问题讨论】:
标签: python path virtualenv aws-cli pyenv