为什么在 PATH 中找不到程序

为什么在 PATH 中找不到程序

我已经ipython在 macOS 上安装了 virtualenv 内部。我的 PATH 环境变量还显示 virtualenv 路径位于开头。which命令还显示该命令ipython位于正确的位置。

问题是,当我运行时ipython,shell 在一个奇怪的地方找到了以前的安装。以下是一些示例:

(csv_import) $ ipython
-bash: /usr/local/bin/ipython: /usr/local/opt/python3/bin/python3.6: bad interpreter: No such file or directory
(csv_import) $ 
(csv_import) $ which ipython
/Users/zeinep/.virtualenvs/csv_import/bin/ipython
(csv_import) $ 
(csv_import) $ echo $PATH
/Users/zeinep/.virtualenvs/csv_import/bin:/Users/zeinep/.avn/bin:/Users/zeinep/.nvm/versions/node/v10.14.1/bin:/usr/local/lib/python3.6/bin:/Users/zeinep/Library/Python/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
(csv_import) $ 
(csv_import) $ 
(csv_import) $ /Users/zeinep/.virtualenvs/csv_import/bin/ipython
Python 3.6.5 (default, Jun 17 2018, 12:13:06) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:         

可以看出,如果我使用完整路径,它就可以工作。否则,/usr/local/bin/ipython即使 shell 应该在 virtualenv 中找到我所看到的,旧的安装也会运行。

答案1

显然,您/Users/zeinep/.virtualenvs/csv_import/bin$PATHbash 保存(散列)版本后添加了该/usr/local/bin版本。修复方法就像这样简单hash -d ipython

相关内容