如图,我已经有3个版本的python的site-packages了。
每次更新python后,原来pip3安装的module都需要重新安装一次。
难道需要我手动把上个版本的pip3安装的module拷贝一下吗?
如图,我已经有3个版本的python的site-packages了。
每次更新python后,原来pip3安装的module都需要重新安装一次。
难道需要我手动把上个版本的pip3安装的module拷贝一下吗?
我的建议是别用 Homebrew 装的 Python,如果有别的依赖就让它们在那就好了
可能的几个方案:
/usr/bin/python3
另外一些 Homebrew 有的 package 可以考虑用 Homebrew 装
是的。conda,pipenv,poetry之类的python环境管理工具其实都可以用homebrew装。
如果只是要使用python写的app,而不说调用python库,那倒是可以直接用brew装。
嗯嗯,我知道可以通过 brew 装,主要想要强调的是用他们装的 python,而不是 homebrew 自己的
但是系统的python3是比较老的版本了啊。
我用python主要是emacs的一些包有python依赖。
而且十分无语的一点,我到现在都不太懂为什么所谓的更新python,是重新下载一个python,这样导致电脑越来越多python的版本。
感谢回答,我先尝试一下pyenv看看。
3.9.6 怎么都不算老吧,如果还要更新的可以看看 pyenv。
本质上 brew install python3
只会装一个版本(目前是 [email protected])更新也不会说重新下载一个不管前面的。主要是架不住别的 package 可能需要不同版本的(3.9, 3.11),你可以尝试 brew uninstall [email protected]
就知道什么依赖了,比如说
Error: Refusing to uninstall /opt/homebrew/Cellar/[email protected]/3.11.1
because it is required by black, pre-commit, vim
用 pyenv
管理 Homebrew 安装的 Python,我写了一个脚本,每次 brew upgrade 之后,自动执行一下即可:
~/bin/brew-post-update
:
#!/usr/bin/env zsh
mkdir -p ~/.pyenv/versions
ln -nfs /usr/local/Cellar/python@2/2*(On[1]) ~/.pyenv/versions/
ln -nfs /usr/local/Cellar/python@2/2*(On[1]) ~/.pyenv/versions/2
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/3
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/3.11
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/3.10
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/3.9
ln -nfs /usr/local/Cellar/[email protected]/3*(On[1]) ~/.pyenv/versions/3.8
cd ~/.pyenv/versions/3/bin
cp -Rf python3.11 python3
cp -Rf python3 python
cp -Rf pip3.11 pip3
cp -Rf pip3 pip
cp -Rf pydoc3.11 pydoc3
cp -Rf python3.11-config python3-config
cp -Rf 2to3-3.11 2to3
cp -Rf idle3.11 idle3
ln -nfs wheel3.11 wheel3
cd ~/.pyenv/versions/3.10/bin
cp -Rf python3 python
cp -Rf pip3 pip
cd ~/.pyenv/versions/3.9/bin
cp -Rf python3.9 python3
cp -Rf python3.9 python
cp -Rf pip3.9 pip3
cp -Rf pip3.9 pip
cd ~/.pyenv/versions/3.8/bin
cp -Rf python3.8 python3
cp -Rf python3.8 python
cp -Rf pip3.8 pip3
cp -Rf pip3.8 pip
echo 'pyenv versions updated.'
我每天早上到公司的第一件事就是:
brew upgrade ; brew post-update ; brew cleanup ; brew list --casks | xargs -I {} brew upgrade --cask {}
这个emacs的包还是第一次听,确实很有用。
lulu大佬能不能讲一下脚本实际上是做了些什么嘛