pipenv
我的 s 中有 2 个不同版本$PATH
:
$ where pipenv
/usr/local/Caskroom/miniconda/base/bin/pipenv #1
/usr/local/bin/pipenv #2
我想隐藏pipenv
#1,以便#2 可以优先,而
- 保持
/usr/local/Caskroom/miniconda/base/bin
之前/usr/local/bin
在$PATH
. - 不
alias pipenv='/usr/local/bin/pipenv'
。 - no running
mv /usr/local/Caskroom/miniconda/base/bin/pipenv{,.bak}
,
或者rm /usr/local/Caskroom/miniconda/base/bin/pipenv
(将来pipenv升级时conda将在该位置再次安装pipenv),
或者卸载pipenv
#1(它是某些conda包的依赖项),
或者类似的东西。
我怎么做?
答案1
将另一个目录(例如 )~/bin
放在PATH
.pipenv
在该目录中创建一个指向您首选的符号链接。例如:
- 将此行放入您的
.profile
:PATH=~/bin:$PATH
- 执行此操作一次:
mkdir ~/bin ln -s /usr/local/bin/pipenv ~/bin
pipenv
如果需要,您还可以选择动态调用哪个。 (例如,如果您的主目录在多台计算机之间共享,并且您希望pipenv
在不同的计算机上有不同的首选目录,或者您想要一种方便的方式来选择您的首选目录pipenv
。)如果您想这样做,而不是符号链接,创建一个包含如下内容的包装脚本并使其可执行 ( chmod +x ~/bin/pipenv
)。
#!/bin/sh
if [ -x /usr/local/bin/pipenv ]; then
pipenv=/usr/local/bin/pipenv
elif [ -x /usr/local/Caskroom/miniconda/base/bin/pipenv ]; then
pipenv=/usr/local/Caskroom/miniconda/base/bin/pipenv
else
pipenv=/usr/bin/pipenv
fi
exec $pipenv "$@"