博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mac上将视频变小_在Mac上将Python 3设置为默认的正确和错误方法
阅读量:2527 次
发布时间:2019-05-11

本文共 8350 字,大约阅读时间需要 27 分钟。

mac上将视频变小

2020年5月15日更新

有许多方法可以配置Python 3. TL; DR,如果您需要快速的解答,请以确保成功。

----

当我准备前往 ,我一直将精力投入到Python开发中。 (如果您也要去那里并想分享您的Python故事,请 !)当我安装一个模块进行修补时,我得到一个提醒,我需要尽快安装Python 3。

$ pip install todoist-python      
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.

因此,我做了我们每个人都会做的事,并四处搜寻以寻找更新我的开发环境的指南,该指南可在Mac(macOS操作系统,以前称为OS X)上运行。 令我惊讶的是,我只发现了少量的StackOverflow帖子,它们向我指出了部分解决方案。 这是有关如何设置环境而不破坏macOS操作系统中内置内容的完整故事。

明智的选择:如果您希望以“正确”的方式安装Python 3,请跳至该部分。 我将首先介绍其他看似正确但不是一个好主意的方法。 如果您时间有限,只想使用推荐的方法,请跳到本文的结尾。

这有什么难的?

macOS随附的Python版本与Python建议用于开发的版本已经过时。 正如所指出的,Python运行时有时也具有可笑的挑战。

那有什么计划? 我的计算机上已经有数十个Python解释器,而且我不知道如何有效地管理它们。 我不想下载最新版本,将其移动到我的路径中,然后每天称呼它(或使用brew install python3 ,它会执行类似的操作)。 我认为这会以一种非常令人沮丧的方式导致生产中断,我不知道如何进行故障排除。 我认为最好的方法是淘汰并替换我正在运行的任何版本的Python,以明确,明确地切换到最新版本和最大版本。

不该做什么

关于如何使Python 3成为系统上默认的Python的第一个想法是移动旧版本并添加新版本:

# what I thought would work       
# first, I'll find my python binary
$
which python
/ usr
/ bin
/ python
# next, I'll move it to an unused name
$
sudo
mv
/ usr
/ bin
/ python
/ usr
/ bin
/ python2
# lastly, I'll move the new binary to the previous path
$
sudo
mv
$PATHTOBINARY
/ python3
/ usr
/ bin
/ python

该模式遵循/ usr / bin /在Python的主要版本之间通常执行的操作,但是我很快就知道这是错误的做法:

$      
sudo 
mv
/ usr
/ bin
/ python
/ usr
/ bin
/ python2
mv: rename
/ usr
/ bin
/ python to
/ usr
/ bin
/ python2: Operation not permitted

值得庆幸的是,macOS保护我免受破坏,使我无法完全理解。 进一步的研究证明这正是我们不应该做的。

我们可以做(但也不应该做)

可以做到。 考虑macOS上应用程序的常见安装模式时,有两种选择。

使用Python 3作为macOS默认设置

Python的网站上有一个我们可以下载和使用。 如果使用软件包安装,则/ usr / local / bin /中将提供python3填充。

别名是必须的,因为不能更改存储在/ usr / bin /中的Python二进制文件。 别名的好处是它特定于我们的命令行外壳。 由于默认情况下使用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不包含用于更新的命令行方式。

让自制软件管理Python 3

项目为许多人所依赖的macOS提供了一个免费的开源软件包管理器。 它赋予Apple用户类似apt-getyum的功能 。 如果您是Homebrew用户,则可能已经安装了Python。 要快速检查,请运行:

$ brew list      
|
grep python
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
)
*
## further output not included ##

好,太棒了! Homebrew维护人员已将默认的Python瓶更新为指向最新版本。 由于Homebrew维护者比我们大多数人在更新发行版方面更可靠,因此我们可以通过以下命令使用Homebrew的Python 3版本:

$  brew update && brew upgrade python

现在,我们要将别名(从上面)指向Homebrew管理的Python副本:

# If you added the previous alias, use a text editor to update the line to the following       
alias
python =
/ usr
/ local
/ bin
/ python3

为了确保上面的路径指向Homebrew在我们的环境中安装Python的位置,我们可以运行brew info python并查找路径信息。

这种使用Homebrew管理我们的Python环境的方法是一个很好的起点,在当时对我来说很有意义。

如果我们仍然需要Python 2怎么办?

对于Python新手来说,从Python 3开始是有意义的。但是,我们中仍然需要Python 2的人(例如,为仅在Python 2中可用的Python项目做出贡献)可以继续使用可用的默认macOS Python二进制文件在/ usr / bin / python中

$ /usr/bin/python      
>>>
print
(
"This runtime still works!"
)
This runtime still works
!

Homebrew非常棒,甚至为Python 2提供了不同的公式:

# If you need Homebrew's Python 2.7 run       
$ brew
install python
@ 2

在任何时候,我们都可以从Shell的配置文件中删除别名,以使用系统上的默认Python副本返回。

不要忘记将pip更新为pip3!

pip命令是专门用于Python软件包的默认软件包管理器。 尽管我们将默认的Python命令更改为版本3,但如果它在以前的版本中,我们必须单独为pip命令添加别名。 首先,我们需要检查使用的版本:

# Note that this is a capital V (not lowercase)       
$ 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作为程序包管理器,因此我们在安装Python 3时就知道它安装了pip3。默认路径应与Python 3相同,但是我们可以通过要求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文档提供 。

我们应该怎么做

当要求对本文进行技术审查时, 给我警告,我的解决方案可能会导致运行哪个Python的想法不可靠,而该想法过于依赖于shell加载别名。 我知道Moshe熟悉Python,但我不知道他是许多 Python教程的作者,还是即将出版的有关macOS上Python开发的书。 他遵循一项核心原则,帮助40位同事在macOS系统上安全,一致地开发Python:

“所有Python开发的基本前提是永远不要使用系统Python。您不希望 Mac OS X的'默认Python'为'python3'。 您永远不必关心默认的Python。”

我们如何停止关心默认值? Moshe建议使用来管理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...
## further output not included ##

现在已经通过pyenv安装了Python 3,我们希望将其设置为pyenv环境的全局默认版本:

$ pyenv global 3.7.3     
# and verify it worked
$ 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

该命令后,我们的dotfile(.zshrc为zsh中或如bash的.bash_profile)应该包括这些行:

if      
command
-v pyenv
1
>/ dev
/ null
2
>&
1 ;
then
 
eval
" $(pyenv init -) "
fi

我们还需要删除在以上各节中使用的别名,因为它们会阻止正确使用pyenv。 删除它们后,我们可以确认pyenv正在管理我们的Python 3版本:

# I start by resetting the current shell      
# Alternatively, start a new terminal instance
$
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感到困惑。

接下来配置Python

熟悉此工作流程后,您可以 。 对于依赖关系管理,使用虚拟环境也是必不可少的。 我在文章中提到了如何使用内置的库,Moshe建议使用 。

从一开始就做

如果您刚刚开始在macOS上进行Python开发,请进行必要的配置,以确保从一开始就使用正确的Python版本。 安装Python 3(带或不带Homebrew)以及使用别名可以让您开始编码,但从长远来看,这并不是一个好策略。 作为简单的版本管理解决方案,可以让您顺利开始。

翻译自:

mac上将视频变小

转载地址:http://ivbzd.baihongyu.com/

你可能感兴趣的文章
年会-2014
查看>>
MBTIles实现
查看>>
创建WPF项目
查看>>
电源模块的PCB设计
查看>>
光猫与普通的家用猫
查看>>
Asp.Net 构架(Http Handler 介绍) - Part.2
查看>>
6.11 spring框架
查看>>
Python--eval()函数
查看>>
【转载】Linux下的crontab定时执行任务命令
查看>>
STM32 HAL库的定时器中断回调函数跟串口中断回调函数
查看>>
vs2010找不到ado.net 实体数据模型解决办法
查看>>
(转)深入理解javascript连续赋值表达式
查看>>
用户场景分析
查看>>
MySQL创建数据库及用户
查看>>
Springboot静态页面放在static路径下还是访问不到
查看>>
centos7 重启网卡失败
查看>>
springboot(一)注解
查看>>
07 Mybatis的多表查询1----1对多和多对1
查看>>
debian和ubuntu的sh dash bash
查看>>
java9-8 局部内部类
查看>>