在使用 Mac OS 多年后,我最近切换到了 Ubuntu 18.04。我经常使用 Python,偶尔需要一种简单的方法来使用不同的版本。我选择了 pyenv,因为它简单易用,而且它能满足我的需求。我关注了本指南一切正常。我在 VS code 中使用 Python 3.7.4 进行了设置,VS code 中的蓝色状态栏显示环境为~/.pyenv/versions/3.7.4/bin/python
。
如果我打开终端并运行,python --version
它会显示 Python 3.7.4。如果我运行,which python
它会显示/home/name/.pyenv/shims/python
由于我当前使用pyenv global 3.7.4
。据我了解,这不会影响系统级 Python,但会影响其他一切。我只想说,这就是我希望它工作的方式:当我设置一个版本时,每个用户编写的代码都应该运行该 Python 版本(无需触及系统 Python)。
在安装 pyenv 之前,我以为只需 pip 安装我的软件包就可以了。这意味着我认为我已经在 18.04 中安装了 python 2.7 和/或 3.6 中的一些软件包。经检查,这两个文件夹都是空的:
ls -ltd /usr/local/lib/python2.7/dist-packages/*
ls -ltd /usr/local/lib/python3.6/dist-packages/*
实际上 site-packages 文件夹也是空的。据我所知,所有用户安装的库都会进入其中任何一个。所以看起来我没有安装任何包,但事实上我知道我安装了。这些是否保存到系统 Python 中,这很麻烦吗?
1.系统 Python 到底存储在哪里?用户安装的 Python 存储在哪里?就像在 Mac OS 中一样,系统 Python 位于 /usr/bin/python,而用户安装的 Python 位于 usr/local/bin/python。
中的 pythonusr/local/lib
对应于 Mac OS 的usr/local/bin
,对吗?而usr/lib
对应于系统 python 即 Mac OS 的usr/bin/python
我在 python 2.7 python3 python3m python3.6 python3.6m 等目录下也有一些与 python 相关的文件(不是文件夹)。usr/bin/
这些文件是什么?属性下显示它是“可执行文件的链接”,所以我假设它只是应用程序的存储位置?
最后usr/lib/
包含 4 个 python 文件夹:python2.7、python3、python3.6 和 python3.7。这些文件夹都不是空的。虽然usr/local/lib
有 2 个 python 文件夹:python2.7 和 python3.6 - 这两个文件夹都包含空的 site 和 dist 文件夹。
2.当我想安装一些软件包时,系统提示我升级 pip。我担心我更新了错误的 pip。我输入了
pip3 install --upgrade pip
3
所以最后没有 a 。然后我一直收到"cannot import from main"
错误。在 stackexchange 上搜索后,我通过运行解决了这个问题
hash -d pip
hash -d pip3
运行后没有任何输出,一切似乎都恢复正常并正常工作。但如果我没记错的话,pip 当然还是从版本 9 更新到了 19。现在 pip -V 和 pip3 -V 都返回 19.2.1。上面这个有什么问题吗?pip 这么过时有什么原因吗?在进行上述修复之前,我在 Ubuntu 中收到一个崩溃报告,说 pip 出了问题。不过自从修复之后再也没有发生过这种情况。
3.我还能做些什么来确保所有 python 安装都正确无误?目前我没有遇到任何问题,但我只是想了解 ubuntu 如何读取不同版本的 python,这样我就不会破坏系统 python。
我希望你能帮我回答这些问题。我从来没有在 Mac OS 上处理过太多问题,但现在我真的想知道它是如何工作的。谢谢!