Pip 升级不会删除旧的 pip 和中断
Pip upgrade does not remove the old pip and breaks
编辑:我的问题不是关于如何立即让 pip 工作的问题。正如您在问题中看到的那样,我通过重新链接解决了这个问题。
问题是:什么是 best/pythonic 在全新的 *NIX 系统上的实践?
人们可能希望拥有 Python2 的最新版本,尤其是 Python3 以及 pip 和 setuptools 等。一个受保护的虚拟环境似乎是方式,但无论如何必须从某个地方开始。
那么推荐的是什么?
从评论看来应该使用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
抛出一个错误
Traceback (most recent call last): File "/usr/bin/pip", line 9, in
from pip import main
原来旧pip还在/usr/bin/pip
,新pip在/usr/local/bin/pip
.
我用暴力修复了它:
rm /usr/bin/pip
ln -s /usr/local/bin/pip /usr/bin/pip
我做对了吗?还是这是注定要失败的方式?
是否有python简洁或优雅的方法来处理此类问题或首先防止它们?
谨致问候并感谢您提出任何建议。
调查评论中的提示后我的结论是:
- Python 与 自身冲突 .
- 不要试图避免这种情况 - 应对它。
- 使用虚拟环境一致地处理不可避免的多个 Python 版本。
pyenv
似乎最适合我的目的。使用以下命令首先安装 pyenv (1),更新它 (2),使用 pyenv (3) 安装 Pythons 版本(对于本例 3.5.6),设置你的全局用户 python到安装的版本 (4),升级 Python 包管理工具 (5) 并在虚拟 Python 环境中安装 anything (6)。
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
pyenv update
CONFIGURE_OPTS=--enable-shared pyenv install 3.5.6
pyenv global 3.5.6
pip install --upgrade pip setuptools wheel
pip install ipython jupyter snowflake-connector-python seaborn
CONFIGURE_OPTS=--enable-shared
中的
CONFIGURE_OPTS=--enable-shared
是某些依赖于共享库的 python 包所必需的。 seaborn
没有它无法安装。
请注意 pyenv
安装的版本包括包管理器 pip
。现在每次调用 python 或 pip 一切都指向正确的版本。
在 MacOS bash 和其他 *NIXes 的脚本中引用 python 时使用 #!/usr/bin/env python
.
可以安装 pyenv install 2.7.15
最新的 python 2.7 并在需要时更换。 pyenv shell 2.7.15
仅在特定 shell 会话需要 运行 临时脚本时切换到 Python2.7。
自从我使用了这个流程后,我不再头疼了。
到目前为止,相同的设置在本地 MacOS 和远程基于 Ububtu 的 jupyter notebook 服务器上都运行良好。
免责声明:我不是硬核 Python 全栈开发人员,但在数据科学管道中必要时使用 Python。因此,对于 Python 中的应用程序开发,这可能不是最佳解决方案,但对于数据科学环境的一致管理而言,它似乎工作得很好。
希望这对您有所帮助。
编辑:我的问题不是关于如何立即让 pip 工作的问题。正如您在问题中看到的那样,我通过重新链接解决了这个问题。
问题是:什么是 best/pythonic 在全新的 *NIX 系统上的实践? 人们可能希望拥有 Python2 的最新版本,尤其是 Python3 以及 pip 和 setuptools 等。一个受保护的虚拟环境似乎是方式,但无论如何必须从某个地方开始。
那么推荐的是什么?
从评论看来应该使用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
抛出一个错误
Traceback (most recent call last): File "/usr/bin/pip", line 9, in from pip import main
原来旧pip还在/usr/bin/pip
,新pip在/usr/local/bin/pip
.
我用暴力修复了它:
rm /usr/bin/pip
ln -s /usr/local/bin/pip /usr/bin/pip
我做对了吗?还是这是注定要失败的方式?
是否有python简洁或优雅的方法来处理此类问题或首先防止它们?
谨致问候并感谢您提出任何建议。
调查评论中的提示后我的结论是:
- Python 与 自身冲突 .
- 不要试图避免这种情况 - 应对它。
- 使用虚拟环境一致地处理不可避免的多个 Python 版本。
pyenv
似乎最适合我的目的。使用以下命令首先安装 pyenv (1),更新它 (2),使用 pyenv (3) 安装 Pythons 版本(对于本例 3.5.6),设置你的全局用户 python到安装的版本 (4),升级 Python 包管理工具 (5) 并在虚拟 Python 环境中安装 anything (6)。curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
pyenv update
CONFIGURE_OPTS=--enable-shared pyenv install 3.5.6
pyenv global 3.5.6
pip install --upgrade pip setuptools wheel
pip install ipython jupyter snowflake-connector-python seaborn
CONFIGURE_OPTS=--enable-shared
中的
CONFIGURE_OPTS=--enable-shared
是某些依赖于共享库的 python 包所必需的。 seaborn
没有它无法安装。
请注意 pyenv
安装的版本包括包管理器 pip
。现在每次调用 python 或 pip 一切都指向正确的版本。
在 MacOS bash 和其他 *NIXes 的脚本中引用 python 时使用 #!/usr/bin/env python
.
可以安装 pyenv install 2.7.15
最新的 python 2.7 并在需要时更换。 pyenv shell 2.7.15
仅在特定 shell 会话需要 运行 临时脚本时切换到 Python2.7。
自从我使用了这个流程后,我不再头疼了。
到目前为止,相同的设置在本地 MacOS 和远程基于 Ububtu 的 jupyter notebook 服务器上都运行良好。
免责声明:我不是硬核 Python 全栈开发人员,但在数据科学管道中必要时使用 Python。因此,对于 Python 中的应用程序开发,这可能不是最佳解决方案,但对于数据科学环境的一致管理而言,它似乎工作得很好。
希望这对您有所帮助。