在macOS上使用python3的方法有很多,但是有一种比其他的方法都好的方法。
不该做什么
我第一个关于让python3成为系统默认的python版本的想法是,删除旧版本的python然后将新版本的python添加进去:
# 我认为这个方法会起作用 # 首先, 我先找到旧版本python的文件 $ which python /usr/bin/python # 然后, 我将它移动到一个其他的位置 $ sudo mv /usr/bin/python /usr/bin/pythzuihouon2 # 最后, 我将新版本python的文件移动到之前的路径 $ sudo mv $PATHTOBINARY/python3 /usr/bin/python
该方法虽然使用了Python主要版本之间通常执行的操作 /usr/bin/ ,但是我很快就发现了这是一个错误的方法:
$ sudo mv /usr/bin/python /usr/bin/python2 mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
值得庆幸的是, macOS保护了我,使我不至于破坏一些我不完全理解的东西。进一步的研究证明,这正是我们不应该做的事情。
我们可以做什么(也不应该做什么)
现在我们知道什么是不应该做的,那么让我们看看我们可以做些什么。当我们考虑macOS上应用程序的常见安装模式时,有几个选项。
使用Python3作为macOS的默认安装模式
Python的网站有一个macOS Python3安装程序我们可以下载和使用。如果使用包安装,则/usr/local/bin/中将提供可用的python3。
别名是必须的,因为存储在/usr/bin/中的Python二进制文件无法更改。别名的优点是它可以具体指定我们的命令行所使用的shell。由于我默认使用zsh,所以我将以下内容放入.zshrc文件中:
$ echo "alias python=/usr/local/bin/python3.7" >> ~/.zshrc
如果您使用的是默认的bash shell,您可以将此相同的文本追加到您的.bashrc:
$ echo "alias python=/usr/local/bin/python3.7" >> ~/.bashrc
该策略有效,但是对于Python将来的更新并不是理想的选择。这意味着我们必须记住要检查网站并下载新文件,因为Python不包含用于更新的命令行方式。
用Homebrew管理Python 3
Homebrew 项目提供了许多人所依赖的macOS的免费开源软件包管理器。它提供了Apple用户类似于apt-get *或yum *的功能。如果您是Homebrew用户,则可能已经安装了Python。要快速检查,请运行:
$ brew list | grep python
如果Python在命令下显示,则表明已安装。让我们看一下它是什么版本:
$ brew info python python: stable 3.7.3 (bottled), HEAD Interpreted, interactive, object-oriented programming language https://www.python.org/ /usr/local/Cellar/python/3.7.2_1 (8,437 files, 118MB) * ## 不包含其他输出 ##
好的,太好了! Homebrew维护人员已将默认的Python bottle更新为指向最新版本。由于Homebrew维护者在更新发行版方面比我们大多数人更可靠,因此我们可以通过以下命令使用Homebrew的Python 3版本:
$ brew update && brew upgrade python
现在,我们要将别名(从上面)指向Homebrew管理的Python副本:
# 如果你添加了上面的别名,请使用文本编辑器将行更新为以下内容 alias python=/usr/local/bin/python3
确保上面的路径指向我们环境中Homebrew安装python的位置,我们可以运行brew info python查找路径信息。
这种使用Homebrew管理我们的Python环境的方法是一个很好的起点,在当时对我来说很有意义。
假若我们依旧需要Python 2呢?
对任何一个新的python人员来说从python3开始都是有意义的。但是,我们那些仍然需要python2的人-例如,为了给仅在python2中可用的python项目做贡献-可以继续用macOS下默认在/usr/bin/python可用的python二进制文件:
$ /usr/bin/python >>> print("这次运行仍然有效!") 这次运行仍然有效!
Homebrew是如此的美妙,它甚至未python2提供了一种不同的方式:
# 如果你需要Homebrew's Python 2.7 运行 $ brew install python@2
在任何时候,我们可以从我们的shell的配置文件中移除别名,退出使用系统默认拷贝的Python。
不要忘记更新pip到pip3!
** pip 命令是专门用于Python软件包的默认软件包管理器。尽管我们将默认的Python命令更改为版本3,但如果在以前的版本中,我们必须单独对 pip **命令起别名。首先,我们需要检查使用的版本:
# 注意这是一个大写V (不是小写) $ pip -V pip 19.0.3 from /Library/Python/2.7/site-packages/pip-19.0.3-py2.7.egg/pip (python 2.7)
为了确保我们正在安装的包适配我们新版本的python,我们将会用另外一个别名指向pip的适配版本。因为在当前环境下我们正在使用Homebrew作为我们的包管理器,我们知道安装Python3的时候他会安装pip3.默认路径应该与Python3相同,但是我们可以通过让shell去寻找的方式来确保这一点:
$ which pip3 /usr/local/bin/pip3
现在我们知道了位置,我们将会添加它到shell的配置文件中,就像我们之前做的那样:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc # or for Bash $ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
最后我们可以通过打开一个新的shell或者重置我们当前的shell并查看指向的内容来确认运行中的pip指向的是pip3.
# This command reloads the current shell without exiting the session # Alternatively, exit the shell and start a new one $ exec $0 # Now we can look to see where pip points us $ which pip pip: aliased to /usr/local/bin/pip3
我们可以避免使用Homebrew来更新pip,但是那需要Python文档中的一个较长的教程
我们应该做什么
当要求对本文进行技术审查时,Moshe Zadka给我一个警告,即我的解决方案可能导致运行哪个Python的想法过于不可靠,而这个想法过于依赖外壳程序加载别名。我知道Moshe熟悉Python,但我不知道他是许多 Python教程的作者,还是即将出版的有关macOS上Python开发的书。他遵循一项核心原则,帮助40位同事在macOS系统上安全且一致地开发Python:
“所有Python开发的基本前提是永远不要使用系统Python。您不要 Mac OS X的’默认Python’为’python3’。您永远不必关心默认的Python。”
我们该怎样停止关心默认值呢?Moshe推荐使用 pyenv去管理python的环境(想对配置pyenv有一个更深入的了解,看这篇文章)。该工具将管理Python的多个版本,并被描述为”简单,易懂且遵循Unix的一站式工具传统,可以很好地完成工作。”
虽然有其他安装选项可以用,但最简单的方式是从Homebrew开始:
$ brew install pyenv ? /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
现在让我们安装最新的Python版本(截至撰写本文时为3.7.3):
$ pyenv install 3.7.3 python-build: use openssl 1.0 from homebrew python-build: use readline from homebrew Downloading Python-3.7.3.tar.xz... -> https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz Installing Python-3.7.3... ## 不包括进一步的输出 ##
现在Python3已经通过pyenv安装了,我们想为pyenv环境设置它为全局默认的版本:
$ pyenv global 3.7.3 # 验证它生效了 $ pyenv version 3.7.3 (set by /Users/mbbroberg/.pyenv/version)
pyenv的强大之处在于它对我们shell路径的控制。为了使其正常工作,我们需要将以下内容添加到我们的配置文件中(对我来说是.zshrc *,可能对您来说是.bash_profile *):
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
执行该命令后,我们的点文件(对于zsh为.zshrc **,对于Bash为.bash_profile **)应包括以下行:
if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi
我们还需要删除我们在以上部分中使用的别名,因为它们会阻止正确使用pyenv。删除它们后,我们可以确认pyenv正在管理我们的Python 3版本:
#我先重置当前的shell # 或者,启动一个新的终端实例 $ exec $0 $ which python /Users/mbbroberg/.pyenv/shims/python $ python -V Python 3.7.3 $ pip -V pip 19.0.3 from /Users/mbbroberg/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pip (python 3.7)
现在我们可以确定我们正在使用Python 3.7.3,并且pip会与之一起更新,而无需在版本之间进行任何手动别名。使用Moshe的建议来使用版本管理器(pyenv),使我们能够轻松地接受将来的升级,而不必对在给定时间运行的Python感到困惑。
##从一开始就做
如果您刚刚开始在macOS上进行Python开发,请进行必要的配置,以确保从一开始就使用正确的Python版本。安装Python 3(带或不带Homebrew)以及使用别名可以让您开始编码,但是从长远来看,这并不是一个好的策略。使用pyenv作为简单的版本管理解决方案可以让您有一个好的开始。
英文原文地址:https://opensource.com/article/19/5/python-3-default-mac
译文地址:https://learnku.com/python/t/52007
【相关推荐:Python3视频教程 】
以上是Mac環境下怎麼設定預設Python 版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具