Не удается найти исполняемый файл (pipsi) в моем PATH, даже если мой PATH установлен правильно, а права доступа также правильны в ZSH

1132
jononomo

Я только что установил pipsi. Я на Mac OS X Yosemite и использую iTerm и работаю zshчерез oh-my-zsh.

Моя проблема в том, что я получаю следующее:

~ >>> pipsi zsh: command not found: pipsi   ~ >>> which pipsi pipsi not found   ~ >>> echo $PATH ~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin   ~ >>> cd ~/.local/bin   ~/.local/bin >>> ls -al total 8 drwxr-xr-x 3 jon staff 102 Feb 23 19:25 . drwxr-xr-x 5 jon staff 170 Feb 23 19:25 .. lrwxr-xr-x 1 jon staff 39 Feb 23 19:25 pipsi -> /Users/me/.local/venvs/pipsi/bin/pipsi   ~/.local/bin >>> cat pipsi #!/Users/jon/.local/venvs/pipsi/bin/python  # -*- coding: utf-8 -*- import re import sys  from pipsi import cli  if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(cli())   ~/.local/bin >>> pipsi pipsi not found 

Я не могу понять, почему система просто не смотрит прямо в ~/.local/binкаталог, видит исполняемый файл pipsiи запускает его. Почему он сообщает pipsi not found?

0

1 ответ на вопрос

3
JakeGould

According to the information presented in your question, your $PATH variable is set like this:

~ >>> echo $PATH ~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

Not too sure where you are setting your $PATH variable but I believe using the ~/ is not going to work in $PATH variable context; I don’t believe ~/ will properly expand to /Users/jon/. So I would recommend adjusting that:

~/.local/bin 

So it is explicitly pointing to your home directory instead:

/Users/jon/.local/bin 

Another great idea/suggestion based on Gordon Davisson’s comment is that somehow you are setting ~/.local/bin with double quotes around it. Something like this:

PATH="~/.local/bin:$PATH" 

That ~/ placed within the double quotes will never get expanded to the full home path in that context. So instead try placing it outside of the quotes like this:

PATH=~/.local/bin:"$PATH" 

Or perhaps even do something different and just use the $HOME variable within double quotes like this:

PATH="$HOME/.local/bin:$PATH" 

Then again, this is all based on how your actual $PATH variable specifics are handled in your user’s shell config. So adjust and tweak based on your specific needs.

Я подозреваю, что проблема связана с установкой `PATH =" ~ / .local / bin: $ PATH "`, и так как `~` в кавычках, он не расширяется до фактического домашнего пути. Вместо этого либо используйте `PATH = ~ / .local / bin:" $ PATH "` (`~` вне кавычек, поэтому он расширяется), либо `PATH =" $ HOME / .local / bin: $ PATH "` ( выражения `$` расширяются в двойные кавычки). Gordon Davisson 9 лет назад 1
@GordonDavisson Отличный комментарий и идея. Я думал об этом сам, но не был уверен на 100%. Спасибо за комментарии и разъяснения. Отредактировал мой ответ, чтобы добавить эту информацию на всякий случай, которая также помогает прояснить ситуацию. JakeGould 9 лет назад 0