从2.7.9(非常简单)切换到python 3.4.3之后,我经常希望在与同事共享之前用python 2.7.9测试我的一些脚本。我正在使用OSX优胜美地平台,其中包含从自制软件编译的所有内容。
情况非常糟糕(在每一步设置PATH
es和PYTHONPATH
) - 直到我发现pyenv这样做非常容易并且可以使用自制软件轻松安装。到目前为止,非常好。
但是,现在我正在使用这个版本的python,它不一定能与自制软件一起使用。而且,我发现我可以切换回系统的python,更普遍的是pyenv可以访问它:
$ pyenv versions
system
2.7.9
* 3.4.3 (set by /usr/local/var/pyenv/version)
但是我怎样才能为自制的<{strong>>编译的python
添加条目?
答案 0 :(得分:18)
您可以在主目录中安装pyenv(如pyenv的安装指南中所述),然后在$(brew --cellar)/python
到ln -s $(brew --cellar python)/* ~/.pyenv/versions/
创建一个符号链接:
{{1}}
Homebrew现在的工作方式,它将同时选择2.x和3.x。
答案 1 :(得分:3)
如果你想让pyenv蟒蛇和自制蟒蛇一起生活,你需要让自制蟒蛇的名字不是版本。否则它们将与pyenv使用的目录名冲突。例如,如果你想安装pyenv python 2.7.11和homebrew python 2.7.11,你可以这样做。
for i in `ls $(brew --cellar python)/`; do
ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew;
done
for i in `ls $(brew --cellar python3)/`; do
ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew;
done
基本上这将在$ HOME / .pyenv /版本中创建一个目录,附加&#39; -brew&#39;这样它就不会与pyenv pythons发生冲突。
答案 2 :(得分:2)
只需添加到@johnizzo1的答案中,python2现在为max.poll.interval.ms
,因此您应将python3 for循环更改为类似以下内容:
python@2
答案 3 :(得分:2)
将之前答案的所有部分放在一起,形成一个实际工作的环来绑定它们:
pyenv-brew-relink() {
rm -f "$HOME/.pyenv/versions/*-brew"
for i in $(brew --cellar)/python* ; do
ln -s -f "$p" "$HOME/.pyenv/versions/${i##/*/}-brew"
done
pyenv rehash
}
答案 4 :(得分:1)
一个方便的功能来重新链接版本:
pyenv-brew-relink() {
rm -f "$HOME/.pyenv/versions/*-brew"
for i in $(brew --cellar python)/*; do
ln -s --force $i $HOME/.pyenv/versions/${i##/*/}-brew;
done
for i in $(brew --cellar python@2)/*; do
ln -s --force $i $HOME/.pyenv/versions/${i##/*/}-brew;
done
}
答案 5 :(得分:1)
在 2020 年,在 class Employee:
def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname
self.fullname = f'{firstname} {lastname}'
之后,您需要 ln -s /outside/python/x.x.x ~/.pyenv/versions/x.x.x
重新散列垫片。
示例:在pyenv中添加macos系统python 2.7
pyenv rehash