我已将所有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
仍未$PYTHONPATH
,python
仍为空,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()
路径?
答案 0 :(得分:0)
首先,安装 pip3 以与python3一起使用。您可以使用以下命令安装它,然后使用 pip3 来安装软件包。
sudo apt-get install python3-pip