【发布时间】:2018-02-02 22:26:29
【问题描述】:
我正在追查安装失败。我有一个全新的 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创建一个虚拟环境,进入它,在那里pip如预期指向python3.6,我安装了几个包,然后退出虚拟环境,突然pip指向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,它似乎解决了一个纯粹的蟒蛇问题,而该解决方案不适用于我的情况。 This discussion 更中肯,指出了点子的问题。这个特定的错误至少对我来说并不完全是因为我能够升级指向 python2.7 的 pip 和指向 python3.5 的 pip3,并且 pip 劫持不是由升级启动的。非常感谢您在这个问题上的任何智慧。
(编辑)
$ which pip
/usr/local/bin/pip
$ head -1 `which pip`
#!/usr/bin/python3
【问题讨论】:
-
不要做
sudo pip任何事情。这可能是您的问题的根源。 -
调试:告诉我们
which pip,head -1 `which pip`。 -
@phd 按照建议进行了编辑。
-
@wim 我在某处读过它并尝试过。 pip install --upgrade pip(没有 sudo)将 pip 9.0.1 放入 /home/username/.local/(等等),而 pip -V 仍然会从 /usr/lib/python2 给我 pip 8.1.1。 7/dist-packages
-
看来你是对的——有些东西取代了 shebang。将其恢复到
#!/usr/bin/python2。然后再试一次——激活和停用 venv。 shebang会再次改变吗?
标签: python pip python-3.6 python-venv