如何使用自制软件在macOS中安装以前版本的Python 3?

ePi*_*314 119 python macos homebrew

如何使用brew在macOS中安装以前版本的Python 3?

使用该命令brew install python我获得了最新版本的Python 3(目前是v3.7.0),但我想要最新版本的Python 3.6(目前是3.6.5).

我已经阅读了另一个pyenv可以帮助处理不同python安装的软件包,但是这个解决方案并不适合我.

ePi*_*314 232

简答

要彻底安装Python 3.6.5,请使用:

brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Run Code Online (Sandbox Code Playgroud)

如果您希望恢复以前安装的版本,则:

brew info python           # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1
Run Code Online (Sandbox Code Playgroud)

答案很长

使用Homebrew安装Python有两个公式:python@2python.
第一个是Python 2,第二个是Python 3.

注意:您可以在Web上找到过时的答案python3作为安装Python版本3的公式名称.现在它就是这样python!

默认情况下,使用这些公式可以安装相应主要版本的Python的最新版本.因此,您无法直接安装3.6之类的次要版本.

使用brew,您可以使用公式的地址安装包,例如在git存储库中.

brew install https://the/address/to/the/formula/FORMULA_NAME.rb
Run Code Online (Sandbox Code Playgroud)

或者专门针对Python 3

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb
Run Code Online (Sandbox Code Playgroud)

您必须指定的地址是所需版本的公式(python.rb)的最后一次提交的地址.您可以通过查看homebrew-core/Formula/python.rb的历史记录来查找commint标识符

https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb

Python> 3.6.5

在上面的链接中,您将找不到3.6.5以上的Python版本的公式.在该(官方)存储库的维护者发布Python 3.7之后,他们只提交Python 3.7的配方更新.

如上所述,使用自制软件你只有Python 2(python @ 2)和Python 3(python),Python 3.6没有明确的公式.

虽然这些次要更新在大多数情况下大多无关紧要,但对于大多数用户来说,我会搜索是否有人做了3.6的明确公式.

  • 我知道这有点老了,但我在努力弄清楚您是如何获得该公式的链接的。3.6的当前版本是3.6.7,是否有一些简单的方法来查找此公式? (3认同)
  • 这将如何影响Homebrew中依赖于默认python3解释器的包或与之交互? (2认同)
  • 我安装了3.7并收到此错误:`错误:已安装python 3.7.0要安装3.6.5_1,请在使用"简答题"时首先运行`brew unlink python``. (2认同)
  • 感谢您提供3.6.5的直接提交链接。你让我摆脱了绝望的境地。 (2认同)

Fra*_*ois 30

作为更新,在做的时候

brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Run Code Online (Sandbox Code Playgroud)

你可能会遇到

Error: python contains a recursive dependency on itself:
  python depends on sphinx-doc
  sphinx-doc depends on python
Run Code Online (Sandbox Code Playgroud)

要绕过它,请将--ignore-dependencies参数添加到brew install.

brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Run Code Online (Sandbox Code Playgroud)

  • 起初这对我不起作用;本质上必须这样做:brew install --debug --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb,一旦make html失败,就忽略它选择2)错误。html / docs失败以后可能会咬我,但是现在它工作正常:shrug: (4认同)

Cle*_*ter 26

我已经尝试了一切,但无法使其正常工作。最后我使用了pyenv它,它像魅力一样直接工作。

因此,homebrew安装后,请执行以下操作:

brew install pyenv
pyenv install 3.6.5
Run Code Online (Sandbox Code Playgroud)

管理虚拟环境:

brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅pyenvpyenv-virtualenv

编辑 (2020/03/19)

我发现使用pyenv-installer比自制软件更容易安装 pyenv 和 pyenv-virtualenv direclty:

brew install pyenv
pyenv install 3.6.5
Run Code Online (Sandbox Code Playgroud)

要管理 python 版本,全局:

pyenv global 3.6.5
Run Code Online (Sandbox Code Playgroud)

或本地在给定目录中:

pyenv local 3.6.5
Run Code Online (Sandbox Code Playgroud)

  • 实际上 virtualenv 不是必需的。`pyenv` 可让您管理 python 版本,而无需使用 venv (4认同)

Mia*_*mad 18

我做的是首先我安装了python 3.7 brew link --overwrite python然后brew link --overwrite python我使用上面的链接安装了python 3.6.5 brew link --overwrite python
之后我运行了brew link --overwrite python.现在我在系统中有所有的蟒蛇来创建虚拟环境.

brew install python3
brew unlink python
Run Code Online (Sandbox Code Playgroud)

创建Python 3.7虚拟环境.

brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies
Run Code Online (Sandbox Code Playgroud)

创建Python 3.6虚拟环境

mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5
Run Code Online (Sandbox Code Playgroud)


小智 8

如果有人面临如下 pip 问题

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Run Code Online (Sandbox Code Playgroud)

根本原因是 openssl 1.1 不再支持 python 3.6。所以你需要安装旧版本的openssl 1.0

这是解决方案:

brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
Run Code Online (Sandbox Code Playgroud)


vin*_*ngo 7

我尝试了以上所有答案来安装Python 3.4.4。python的安装可行,但不会安装PIP,并且我无能为力。我使用的是Mac OSX Mojave,这会导致zlib,openssl出现一些问题。

不该做什么:

  • 尝试避免对公式PythonPython3给定的早期版本使用Homebrew 。
  • 不要尝试编译Python

解:

  1. 下载macOS 64位安装程序macOS 64位/ 32位安装程序https : //www.python.org/downloads/release/python-365/
  2. 在前面的步骤,它会下载的Python 3.6.5,例如如果你想下载的Python 3.4.4,在上面的网址取代蟒蛇-365蟒蛇-344
  3. 下载单击您下载的文件,GUI安装程序将打开
  4. 如果您下载了python-365,则在安装后要启动此版本的python,您将在终端python365中键入,对pip相同,即为pip365

ps:您不必在系统上卸载其他版本的Python。


编辑:


我发现了一种更好的解决方案,可在MacOSX,Windows,Linux等系统上运行。

  1. 是否已安装python都没关系。
  2. 下载Anaconda
  3. 安装后,在终端中输入: conda init
  4. 在终端中,使用任何 python版本创建虚拟环境,例如,我选择了3.4.4:conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
  5. 然后,在终端中,您可以使用以下命令检查已创建的所有虚拟环境: conda info --envs
  6. 然后,在终端中,使用以下命令激活您选择的虚拟环境: conda activate [The name of your virtual environment that was shown with the command at step 5]