点升级不会删除旧的点并中断

时间:2018-08-24 10:38:38

标签: python ubuntu pip apt

编辑:我的问题不是不是,关于如何立即让小知识发挥作用。我通过重新链接来解决此问题,如您在问题中所见。

问题是:在新的* NIX系统上,最佳/ python最佳实践是什么? 人们可能想要拥有Python2的最新版本,尤其是具有pip和setuptools等的Python3。受保护的虚拟环境似乎是其中的一种方式,但是无论如何都必须从某个地方开始。

那是什么建议?

从评论看来,应该使用get-pip.py脚本进行安装,然后使用pip安装virtualenv。我想如果要同时使用Python2和Python3,则必须同时进行。

这是几天前发生的事情:

Ubuntu 18.04和Python 2.7

我是R的重度用户,但是使用越来越多的Python。几乎每次我在Linux或OSX上建立任何类型的自定义python环境时,都会发生故障,并且必须弄乱……链接,二进制文件,路径,依赖项。每次。现在有成千上万的人坐在Ubuntu / Debian机器上,apt install python pip; pip install --upgrade pip和-duh-会坏吗?真的吗?

现在特别是:我想在网络服务器上安装django,并以apt install python-pip开头。

然后我推荐使用pip install --upgrade pip,它安装了pip-18.0但给出了消息Not uninstalling pip at /usr/lib/python2.7/dist-packages

此后pip --version抛出错误

  

回溯(最近一次通话最后一次):文件“ / usr / bin / pip”,第9行,在          来自pip import main

原来,旧的点仍位于/usr/bin/pip中,而新的点仍位于/usr/local/bin/pip中。

我用以下方法解决了蛮力问题:

rm /usr/bin/pip
ln -s /usr/local/bin/pip /usr/bin/pip

我做对了还是这是注定要失败的方法?

是否有Python或优雅的方式来处理此类问题或从一开始就防止它们出现?

致以最诚挚的问候,并感谢您提出任何建议。

1 个答案:

答案 0 :(得分:0)

调查评论中的提示后,我的结论是:

  1. Python与自身冲突。
  2. 请勿尝试避免这种情况-应对之。
  3. 使用虚拟环境来一致地处理不可避免的多个Python版本。
  4. pyenv似乎最适合我的目的。使用以下命令安装第一个pyenv(1),对其进行更新(2),使用pyenv(3)安装Python版本(对于此示例3.5.6),将用户全局python设置为已安装的版本(4),升级Python软件包管理工具(5),然后在虚拟Python环境中安装任何内容(6)。
    1. curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    2. pyenv update
    3. CONFIGURE_OPTS=--enable-shared pyenv install 3.5.6
    4. pyenv global 3.5.6
    5. pip install --upgrade pip setuptools wheel
    6. pip install ipython jupyter snowflake-connector-python seaborn
对于某些依赖共享库的python软件包,需要(3)中的

CONFIGURE_OPTS=--enable-sharedseaborn将无法安装。

请注意,已安装的pyenv版本包括程序包管理器pip。现在,每次调用python或pip都将引用正确的版本。

在MacOS bash和其他* NIX中的脚本中引用python时,请使用#!/usr/bin/env python

可以安装pyenv install 2.7.15最新的python 2.7,并在必要时进行更改。 pyenv shell 2.7.15仅在需要运行临时脚本时才针对特定的Shell会话切换到Python2.7。

自从我使用此流程后,我就再也没有头痛了。

到目前为止,相同的设置在本地MacOS和基于Ububtu的远程Jupyter笔记本服务器上均能发挥出色的作用。

免责声明:我不是Python核心全栈开发人员,但是在数据科学管道中必要时使用Python。因此,对于用Python开发应用程序来说,这可能不是最好的解决方案,但是对于数据科学环境的一致管理而言,它似乎运行良好。

希望这会有所帮助。