He tenido problemas con openssl y python@2 con brew, que se han explicado aquí (sin resolver) . La solución alternativa documentada para reinstalar Python y openssl no funcionaba, así que decidí desinstalar y reinstalar Python.
El problema es que cuando intenta instalar Python 2 con brew, recibe este mensaje:
brew install python@2 Error: No available formula with the name "python@2" ==> Searching for a previously deleted formula (in the last month)... Warning: homebrew/core is shallow clone. To get complete history run: git -C "$(brew --repo homebrew/core)" fetch --unshallow python@2 was deleted from homebrew/core in commit 028f11f9e: python@2: delete (https://github.com/Homebrew/homebrew-core/issues/49796) EOL 1 January 2020. We gave it 1 month more to live so that people had time to migrate. All in all, developers had 11 years to do their migration. You can use the `brew extract` command and maintain python@2 in your own tap if necessary: https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap To show the formula before removal run: git -C "$(brew --repo homebrew/core)" show 028f11f9e^:Formula/python@2.rb If you still use this formula consider creating your own tap: https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap Desafortunadamente, todavía tengo varias fórmulas de preparación que dependen de python@2 de Brew. Esos incluyen awscli , letsencrypt , pr sshuttle por ejemplo
aws zsh: /usr/local/bin/aws: bad interpreter: /usr/local/opt/python@2/bin/python2.7: no such file or directory No sé cómo usar este comando de brew extract que documentaron para reinstalar Python@2. Necesita una fórmula y un grifo. Imagino que la fórmula sería python@2 . No estoy seguro de cuál debería ser el grifo.
Además, la reinstalación de grifos como aws o letsencrypt tampoco funciona muy bien.
Después de reinstalar awscli ( brew reinstall awscli ), la ejecución de los comandos de aws aún genera errores.
aws /usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="? if x is 0 or x is 1: /usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="? if x is 0 or x is 1: /usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="? elif y is 0 or y is 1: /usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="? elif y is 0 or y is 1: /usr/local/Cellar/awscli/2.0.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:260: SyntaxWarning: "is" with a literal. Did you mean "=="? if original_result is 0: usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: the following arguments are required: commandParece que el personal de homebrew realmente hace que sea lo más difícil posible usar Python 2.7 en macOS como pueden.
brew extract vinculado realmente no es útil, debe buscar respuestas aquí sobre cómo hacer su propio grifo a partir de fuentes extraídas.brew extract ni siquiera funciona correctamente debido a la @ en el nombre del paquete.Sin embargo, la solución es muy simple, solo necesita descargar la última confirmación conocida e instalarla desde ese archivo:
cd ~ wget https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/python@2.rb brew install python@2.rb rm python@2.rbPuede haber una advertencia acerca de que esto es "inestable", lo que no entiendo, ya que una confirmación en un historial de Git es lo más estable posible.
Verifique el siguiente comando (lo estoy usando en macOS 10.13, es posible que para un macOS más nuevo funcione sin compilación fuente):
brew install pr0d1r2/python2/python@2.7.17 --build-from-sourcepython@2 desde un toque local El siguiente método funciona con la versión actual ( c9b8a3ef6 ) de brew :
$ brew tap-new <user>/homebrew-python2 $ brew extract python@2 <user>/homebrew-python2 $ brew install /usr/local/Homebrew/Library/Taps/<user>/homebrew-python2/Formula/python@2.7.17.rb El comando brew tap-new crea una nueva plantilla de toque local en /usr/local/Homebrew/Library/Taps/<user>/homebrew-python2 . El nombre del grifo necesita un componente <user> y <repo> separados por / . Los valores reales son arbitrarios. La denominación anterior sigue las convenciones de Cómo crear y mantener un grifo . Si quisiera presionar el botón para acceder a GitHub, usaría su nombre de usuario de GitHub como usuario. No es necesario enviar a GitHub (y no se realizó en las instrucciones anteriores).
Los comandos de extracción de brew extract la versión reciente de la fórmula del historial de repositorios en el toque (local) dado. En nuestro caso, se extrae python@2.7.17.rb .
El comando brew install finalmente instala la fórmula.
El método discutido anteriormente (instalar una versión anterior de la fórmula desde una URL de confirmación de GitHub) ya no funciona para python@2 con la versión actual de brew ( c9b8a3ef6 ), produce el siguiente error:
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/python@2.rb Updating Homebrew... ==> Auto-updated Homebrew! Updated Homebrew from 88f17b8b6 to c9b8a3ef6. ... Error: Calling Installation of python@2 from a GitHub commit URL is disabled! Use 'brew extract python@2' to stable tap on GitHub instead.Puede usar pyenv para instalar python con:
brew install pyenv pyenv install 2.7.18Opcionalmente, configúrelo a su valor predeterminado global:
pyenv global 2.7.18 Buen artículo sobre por qué usar pyenv es mejor que usar brew para administrar su instalación de python.
Para la posteridad, trabajando en macOS 10.15 (mayo/2021):
/usr/local/bin/brew tap-new ${USER}/homebrew-python2 /usr/local/bin/brew extract python@2 ${USER}/homebrew-python2 /usr/local/bin/brew install /usr/local/Homebrew/Library/Taps/${USER}/homebrew-python2/Formula/python@2.7.17.rb # https://github.com/Homebrew/brew/issues/5734#issuecomment-464705002 /usr/local/bin/brew untap ${USER}/python2Usé métodos de esta página para instalar Python 2.7 en Mac durante un año. Pero en mayo de 2021 probé la mayoría de las sugerencias en esta página y todas fallaron.
Tal vez Python 2.7 sea cada vez más difícil de instalar o tal vez mi nuevo macOS Big Sur 11.4 esté causando el problema.
Pude configurar un entorno funcional de Python 2.7 de esta manera al reutilizar el Python 2.7.16 nativo
Aquí están los pasos de instalación:
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install virtualenv ~/Library/Python/2.7/bin/pip install virtualenv virtualenv --python=/usr/bin/python venv source venv/bin/activateNinguna de las respuestas en esta página funcionó para mí 1 en MacOS Monterey. En caso de que esto ayude a alguien, aquí hay una solución alternativa, que técnicamente no se instala directamente a través de Homebrew , solo indirectamente.
Una solución simple para mí, que funciona, es instalar Anaconda a través de Homewbrew y luego crear un entorno virtual para Python 2.7.
Nota: La instalación de Anaconda ocupará algo de espacio en su computadora, más que simplemente instalar Python 2.7 a través de Homebrew o Pyenv:
Anaconda es una distribución de los lenguajes de programación Python y R para computación científica (ciencia de datos, aplicaciones de aprendizaje automático, procesamiento de datos a gran escala, análisis predictivo, etc.), que tiene como objetivo simplificar la administración y la implementación de paquetes. La distribución incluye paquetes de ciencia de datos adecuados para Windows, Linux y macOS. https://en.wikipedia.org/wiki/Anaconda_(Python_distribution)
Básicamente, los pasos son los siguientes, pero es posible que desee consultar una guía de instalación completa para obtener más detalles.
Instale Anaconda desde Homebrew:
brew install --cask anacondaCuando esté instalado, cree un entorno virtual para Python 2.7 en una carpeta de su elección, en este caso para Python 2.7.18:
conda create --prefix=/MY_FOLDER/NAME_OF_ENVIRONMENT python=2.7.18Puede enumerar los entornos:
conda env listActivar el entorno a través de:
conda activate NAME_OF_ENVIRONMENT Ahora puede instalar paquetes, etc., como de costumbre, usando pip install <package> o, alternativamente conda install <package> .
NB: si su instalación de Anaconda es nueva,
Es posible que se le solicite que ejecute conda init una vez antes de poder activar el entorno virtual.
Es posible que deba ejecutar lo siguiente para poder encontrar el entorno virtual (por ejemplo, a través conda list env ) que agregará una línea en ~/.condarc :
conda config --append envs_dirs /MY_FOLDER/NAME_OF_ENVIRONMENT
Si está molesto por el texto que puede decir "Py base" cada vez que abre la Terminal, haga lo siguiente según esta respuesta , que agregará una línea en ~/.condarc :
conda config --set auto_activate_base false
Una vez que haya activado el entorno, para acortar la ruta que aparece en la Terminal siempre que esté activo, agregue esta fila a ~/.condarc :
env_prompt: ({name})
1 No estoy seguro de si se debe a que algo relacionado con las instalaciones de Python no funciona en mi Mac, por lo que es posible que no tenga los mismos problemas. Pero estaba teniendo problemas con todas las soluciones: todo, desde la instalación de virtualenv para la instalación nativa de MacOS Python, no tuvo éxito, error de compilación al intentar instalar 2.7.18 a través de pyenv , el método de brew extract también falló, etc.
¡¡¡Esto debería funcionar!!!
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install virtualenv # This will not work, use below ~/Library/Python/2.7/bin/pip install virtualenv ~/Library/Python/2.7/bin/virtualenv --python=/usr/bin/python venv_twisted source venv_twisted/bin/activatePara aquellos que aparecen aquí después de que Apple eliminó el sistema python en macOS 12.3 , aquí se explica cómo instalar y ejecutar python2 y python3.
Pitón 2
python , python2 -> pitón 2.7
# Download/run the legacy macOS installer (pick which one for your sys) https://www.python.org/downloads/release/python-2716/ # Add pip for python2.7 curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py python2 get-pip2.py # Optionally add the helpers like easy_install back onto your path # In your ~/.zprofile or whatever bash/shell profile equivalent PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH # Optionally add some helpers while editing shell profile alias pip2="python2 -m pip" alias venv2="virtualenv -p python2" alias venv3="virtualenv -p python3" # Optionally some apple-specific std libraries are missing, search # and download them. Example: plistlib.py curl https://raw.githubusercontent.com/python/cpython/2.7/Lib/plistlib.py -o /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py # Lastly, there is no symlink /usr/bin/python anymore # /usr/bin is system protected so you can't add one either # # Change your programs to use /usr/local/bin/python # or google how to disable SIP to make a symlink in /usr/binPitón 3
python3 -> pitón 3
brew update brew install python3 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py # Optionally add a helper in ~/.zprofile alias venv3="virtualenv -p python3"Pruébalo
~ % python --version Python 2.7.16 ~ % python2 --version Python 2.7.16 ~ % python3 --version Python 3.9.10 # Running older python2 python2 -m pip install... python2 ... # Testing the venv2 alias from above venv2 foo source foo/bin/activate pip -V # 2.7 pip install -y -r req.txt pip uninstall -y -r req.txt pip freeze deactivate # Testing the venv3 alias from above venv3 foo3 source foo3/bin/activate pip -V # 3.9 pip install -y -r req.txt pip uninstall -y -r req.txt pip freeze deactivateSolución de problemas a través de la desinstalación/reinstalación
# Credit to https://www.macupdate.com/app/mac/5880/python/uninstall # for many of the tips in this section. # Sometimes there are problems related to accepting xcode # tool agreement. Open XCode to make sure it finished # installing its tool updates. # Remove old python Application installs # open the apps dir and delete Python 2, 3 via Finder open /Applications # Remove old brew installs brew list | grep python brew uninstall python brew uninstall python3 # find/remove lingering unlinked kegs ls /usr/local/Cellar/ | grep python # Cleanup binaries sudo rm -rf /Library/Frameworks/Pyth* rm /usr/local/bin/pip* # Cleanup symlinks which -a python # check results, and rm each one which -a python2 # check results, and rm each one which -a python3 # check results, and rm each one brew cleanup # prunes symlinks