如何链接自制python版本并将其设置为默认版本

如何链接自制python版本并将其设置为默认版本,python,macos,homebrew,Python,Macos,Homebrew,我刚从MacPorts切换到自制。在安装了所有必需的XCode版本和其他软件后,我尝试使用自制软件安装python:我认为它已成功安装,但当我安装了哪个python时,它仍然显示了2.7.3,我认为这是Mountain Lion附带的版本 which python /usr/local/bin/python python --version Python 2.7.3 所以我再次尝试安装 brew install python --framework --universal Warning:

我刚从MacPorts切换到自制。在安装了所有必需的XCode版本和其他软件后,我尝试使用自制软件安装python:我认为它已成功安装,但当我安装了
哪个python
时,它仍然显示了2.7.3,我认为这是Mountain Lion附带的版本

which python
/usr/local/bin/python

python --version
Python 2.7.3
所以我再次尝试安装

brew install python --framework --universal
Warning: python-2.7.5 already installed, it's just not linked
但是它说Python2.7.5已经安装并且没有链接,我试着做
brew链接python

这让我产生了以下信息,因此,我不知道我应该做什么:

链接/usr/local/ceral/python/2.7.5。。。警告:无法链接python。解除链接

Error: Could not symlink file: /usr/local/Cellar/python/2.7.5/bin/smtpd2.py
Target /usr/local/bin/smtpd2.py already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

这个答案是为了在Mac OS X El Capitan上将Python 2.7.10升级到Python 2.7.11。关于终端类型:

brew unlink python
在终端上的那个类型之后

brew install python
在终端中,键入:

brew link python
如果你用

brew install python
在“取消链接”之前 你有

我也是

brew unlink python && brew link python
并打开一个新的端子外壳

python -V
Python 2.7.11

我认为您必须准确地知道要使用命令
brew link python链接的版本,例如:

brew link python 3
它会给你一个这样的错误:

您可能要删除它:

rm '/usr/local/bin/2to3-3.5'
要强制链接并覆盖所有冲突文件,请执行以下操作:

brew link --overwrite python3
要列出将被删除的所有文件,请执行以下操作:

brew link --overwrite --dry-run python3
但您必须复制/粘贴命令以强制链接:

brew link --overwrite python3

我认为您必须安装版本(较新版本)。

默认情况下,brew切换到python3,因此,如果您仍想将python2设置为默认的bin python,请运行:

brew unlink python && brew link python2 --force

使用
brew安装python3后,请安装python3
我得到了一个错误:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
键入
brew link python3
后,错误为:

Linking /usr/local/Cellar/python/3.6.4_3... Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
要解决这个问题:

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/*
brew link python3

在此之后,我可以通过在OS X High Sierra上键入
python3
来打开python3,我必须这样做:

sudo install -d -o $(whoami) -g admin /usr/local/Frameworks
brew uninstall --ignore-dependencies python
brew install python
python --version # should work, returns 2.7, which is a Python thing (it's weird, but ok)
归功于


我认为这比递归地遍历/usr/local目录要好,但这可能会解决其他问题;)

我使用这些命令来解决它

mkdir /usr/local/lib
mkdir /usr/local/lib/pkgconfig
brew link python

我的问题是,我有太多不同版本的python,所以即使在我创建了brew链接之后,它也会打开一个不同的python 3.7。链接后,我执行了以下附加步骤使其成为默认值

首先,打开设置python路径的文档

 nano ~/.bash_profile
然后出现了这样的情况:

# Setting PATH for Python 3.7
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH
这里的问题是,我的Python for brew框架不在文件夹中!!因此,我更改了Python3.7的框架,在我的系统中如下所示

# Setting PATH for Python 3.7
# The original version is saved in .bash_profile.pysave
PATH="/usr/local/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH
更改并保存文件重新启动计算机,然后输入
python3.7
,我得到了为brew安装的python


不确定我的案例是否适用于所有人,但值得一试。不确定每个人的框架路径是否相同,请在尝试之前确定。

您可以按照以下步骤操作

$ python3 --version  
$ brew unlink python@2
$ brew link python3   
$ python3 --version   

其他几个的可能重复。似乎有最好的解决办法。或者可能。好吧,当你执行这些命令时会发生什么?比如@eric guo写道:你需要
--force
,所以
brew取消python链接和&brew链接python2--force
。不,我得到
链接/usr/local/cillar/python/3.6.4\u 4。。。错误:权限被拒绝@dir\u s\u mkdir-/usr/local/Frameworks/Python.framework
您不必
chown-R
/usr/local,仅供参考。。。把答案贴在下面海姆·伊利亚:可能吧。但是,代码片段来自官方自制存储库。
# Setting PATH for Python 3.7
# The original version is saved in .bash_profile.pysave
PATH="/usr/local/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH
$ python3 --version  
$ brew unlink python@2
$ brew link python3   
$ python3 --version