python3.6-venv hijacks pip。什么是防止这种情况的方法?

时间:2017-08-24 22:18:29

标签: python pip python-3.6 python-venv

我正在追逐安装失败。我有一个新的ubuntu xenial安装。我有几个不同的项目,每个涉及需要不同版本的python的依赖项,包括一个gnuradio项目,似乎有合理的期望,pip指向python2.7。这是我运行的第一部分:

$ sudo apt-get update
$ sudo apt-get -yq upgrade
$ sudo apt-get -yq install python-pip
$ sudo pip install --upgrade pip
$ sudo apt-get install -yq python3-pip
$ sudo pip3 install --upgrade pip
$ sudo apt-get update
$ sudo apt-get -yq upgrade
$ sudo apt-get -yq install python-dev python3-dev
$ sudo apt-get install --fix-missing python-apt
$ sudo pip install numpy scipy matplotlib pybombs virtualenv
$ sudo apt-get -yq install build-essential libffi-dev libssl-dev python3-setuptools
$ sudo pip3 install --upgrade setuptools wheel
$ sudo pip3 install numpy scipy matplotlib virtualenv
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get install python3.6
$ sudo apt-get -yq install python3.6-venv python3.6-dev
$ sudo apt-get update
$ sudo apt-get upgrade

到目前为止没有任何投诉,当我查看pip和pip3时,他们指出了我希望他们指出的地方:

$ pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

现在我为python3.6创建一个虚拟环境,输入它,在那里按照预期的点到python3.6,我安装了几个包,然后退出虚拟环境并突然点到python3.5

$ mkdir projvenv
$ python3.6 -m venv /home/username/projvenv/
$ source /home/tom/vertexprojvenv/bin/activate
(projvenv) $ pip -V
pip 9.0.1 from /home/tom/projvenv/lib/python3.6/site-packages (python 3.6)
(projvenv) $ pip install numpy scipy matplotlib
(projvenv) $ deactivate
$ pip -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

我看过this question似乎解决了纯粹的anaconda问题,而解决方案并不适用于我的情况。 This discussion更重要的是,并指出了pip的问题。因为我能够升级指向python2.7的pip和指向python3.5的pip3,并且pip劫持不是由升级启动的,所以这个特定的错误至少不会对我有什么影响。任何关于这个问题的智慧都非常感激。

(编辑)

$ which pip
/usr/local/bin/pip
$ head -1 `which pip`
#!/usr/bin/python3

1 个答案:

答案 0 :(得分:0)

/usr/local/bin/pip中恢复shebang行 - 将其设为#!/usr/bin/python2

PS。好吧,正式来说,这不是一个完整的答案,因为问题是“如何<强>防止?”我不知道什么程序改变了shebang线;但我怀疑这是虚拟环境。