首頁 後端開發 Python教學 Mac環境下怎麼設定預設Python 版本?

Mac環境下怎麼設定預設Python 版本?

Sep 28, 2022 pm 08:04 PM
python

Mac環境下怎麼設定預設Python 版本?

在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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mysql 是否要付費 mysql 是否要付費 Apr 08, 2025 pm 05:36 PM

MySQL 有免費的社區版和收費的企業版。社區版可免費使用和修改,但支持有限,適合穩定性要求不高、技術能力強的應用。企業版提供全面商業支持,適合需要穩定可靠、高性能數據庫且願意為支持買單的應用。選擇版本時考慮的因素包括應用關鍵性、預算和技術技能。沒有完美的選項,只有最合適的方案,需根據具體情況謹慎選擇。

HadiDB:Python 中的輕量級、可水平擴展的數據庫 HadiDB:Python 中的輕量級、可水平擴展的數據庫 Apr 08, 2025 pm 06:12 PM

HadiDB:輕量級、高水平可擴展的Python數據庫HadiDB(hadidb)是一個用Python編寫的輕量級數據庫,具備高度水平的可擴展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創建用戶:createuser()方法創建一個新用戶。 authentication()方法驗證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

mysql workbench 可以連接到 mariadb 嗎 mysql workbench 可以連接到 mariadb 嗎 Apr 08, 2025 pm 02:33 PM

MySQL Workbench 可以連接 MariaDB,前提是配置正確。首先選擇 "MariaDB" 作為連接器類型。在連接配置中,正確設置 HOST、PORT、USER、PASSWORD 和 DATABASE。測試連接時,檢查 MariaDB 服務是否啟動,用戶名和密碼是否正確,端口號是否正確,防火牆是否允許連接,以及數據庫是否存在。高級用法中,使用連接池技術優化性能。常見錯誤包括權限不足、網絡連接問題等,調試錯誤時仔細分析錯誤信息和使用調試工具。優化網絡配置可以提升性能

Navicat查看MongoDB數據庫密碼的方法 Navicat查看MongoDB數據庫密碼的方法 Apr 08, 2025 pm 09:39 PM

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

mysql 無法連接到本地主機怎麼解決 mysql 無法連接到本地主機怎麼解決 Apr 08, 2025 pm 02:24 PM

無法連接 MySQL 可能是由於以下原因:MySQL 服務未啟動、防火牆攔截連接、端口號錯誤、用戶名或密碼錯誤、my.cnf 中的監聽地址配置不當等。排查步驟包括:1. 檢查 MySQL 服務是否正在運行;2. 調整防火牆設置以允許 MySQL 監聽 3306 端口;3. 確認端口號與實際端口號一致;4. 檢查用戶名和密碼是否正確;5. 確保 my.cnf 中的 bind-address 設置正確。

mysql 需要互聯網嗎 mysql 需要互聯網嗎 Apr 08, 2025 pm 02:18 PM

MySQL 可在無需網絡連接的情況下運行,進行基本的數據存儲和管理。但是,對於與其他系統交互、遠程訪問或使用高級功能(如復制和集群)的情況,則需要網絡連接。此外,安全措施(如防火牆)、性能優化(選擇合適的網絡連接)和數據備份對於連接到互聯網的 MySQL 數據庫至關重要。

如何針對高負載應用程序優化 MySQL 性能? 如何針對高負載應用程序優化 MySQL 性能? Apr 08, 2025 pm 06:03 PM

MySQL數據庫性能優化指南在資源密集型應用中,MySQL數據庫扮演著至關重要的角色,負責管理海量事務。然而,隨著應用規模的擴大,數據庫性能瓶頸往往成為製約因素。本文將探討一系列行之有效的MySQL性能優化策略,確保您的應用在高負載下依然保持高效響應。我們將結合實際案例,深入講解索引、查詢優化、數據庫設計以及緩存等關鍵技術。 1.數據庫架構設計優化合理的數據庫架構是MySQL性能優化的基石。以下是一些核心原則:選擇合適的數據類型選擇最小的、符合需求的數據類型,既能節省存儲空間,又能提升數據處理速度

如何將 AWS Glue 爬網程序與 Amazon Athena 結合使用 如何將 AWS Glue 爬網程序與 Amazon Athena 結合使用 Apr 09, 2025 pm 03:09 PM

作為數據專業人員,您需要處理來自各種來源的大量數據。這可能會給數據管理和分析帶來挑戰。幸運的是,兩項 AWS 服務可以提供幫助:AWS Glue 和 Amazon Athena。

See all articles