Python virtualenv:为什么pip仍在寻找非$ path路径?

时间:2017-08-11 06:55:21

标签: python pip virtualenv

我已将所有python2.7安装保存在~/.local/目录中,这样每次我都不需要sudo pip install $HOME/.local/lib/python2.7/site-packages }。我的$PYTHONPATH上也有python3。这已经运作了好几年,但现在我发现自己需要更频繁地运行virtualenv程序。经过大量研究后,似乎python是在同一系统上处理python3 2和3的最佳推荐方式。但我遇到了麻烦。我可以启动pip虚拟环境但是当我尝试使用~/.local/安装新的库时,pip仍会搜索旧的全局路径(即~/.local/bin/),这是有道理的。但是,如果我从$PATH删除$PYTHONPATH目录并取消设置virtualenv,则情况就是如此。 以下是我采取的步骤: 首先检查预赛,然后再激活maddoxw@firefly:~$ echo $PATH /usr/local/cuda-8.0/bin:/home/maddoxw/.node_modules_global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/maddoxw/bin:/home/maddoxw/scripts maddoxw@firefly:~$ echo $PYTHONPATH maddoxw@firefly:~$ python --version Python 2.7.12 maddoxw@firefly:~$ python3 --version Python 3.5.2 maddoxw@firefly:~$ which pip 。 (我在Ubuntu 16.04顺便说一下)

~/.local/bin

由于我从路径中删除了pip目录,因此我确定无法找到$PYTHONPATH。此外,virtualenv仍为空。现在我创建了maddoxw@firefly:~$ mkdir test && cd test/ mkdir: created directory 'test' maddoxw@firefly:~/test$ python3 -m venv .env maddoxw@firefly:~/test$ source .env/bin/activate (.env) maddoxw@firefly:~/test$ echo $PATH /home/maddoxw/test/.env/bin:/usr/local/cuda-8.0/bin:/home/maddoxw/.node_modules_global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/maddoxw/bin:/home/maddoxw/scripts (.env) maddoxw@firefly:~/test$ echo $PYTHONPATH (.env) maddoxw@firefly:~/test$ which python /home/maddoxw/test/.env/bin/python (.env) maddoxw@firefly:~/test$ python --version Python 3.5.2 (.env) maddoxw@firefly:~/test$ which pip /home/maddoxw/test/.env/bin/pip

~/.local/

好。我的$PATH仍未$PYTHONPATHpython仍为空,pip指向正确的路径和版本,pip install指向正确地点。现在让我们尝试(.env) maddoxw@firefly:~/test$ pip install Cython Requirement already satisfied: Cython in /home/maddoxw/.local/lib/python2.7/site-packages 一个新的lib。

pip

为什么$PATH仍在寻找非forwardRef()路径?

1 个答案:

答案 0 :(得分:0)

首先,安装 pip3 以与python3一起使用。您可以使用以下命令安装它,然后使用 pip3 来安装软件包。

sudo apt-get install python3-pip