Почему emacs не находит psql?
Это несколько странно, я скомпилировал из исходного кода postgresql. У меня не было никаких проблем с использованием psql вообще.
$ psql -d rita
psql (9.3.2)
Type "help" for help.
rita=>
`
Однако, когда я пытаюсь запустить M-x sql-postgres на emacs, он запрашивает пользователя, пароль, базу данных, хост. Но когда я ввожу данные в минибуфер, просто появляется: Unable to locate SQL program psql. Я надеюсь, что кто-нибудь может сказать мне, как я могу исправить это, или что происходит.
2 ответов:
Ваш
psqlне находится на стандартном пути.Вы, вероятно, устанавливаете
PATHв~/.bashrc, и Emacs не увидит его, если вы не запустите Emacs с терминала.Решение таково:
(setq sql-postgres-program "/usr/local/pgsql/bin/psql")Или
ln -sдо/usr/bin, Если хотите.
Кроме того, вы можете добавить путь к двоичному файлу psql в список exec-path вашего emacs следующим образом:
(add-to-list 'exec-path "/path/to/program") (setenv PATH (mapconcat 'identity exec-path ":"))Я запускаю Emacs на Mac в качестве среды разработки. Запуск emacs из док-станции не включает путь для программ, установленных через MacPorts. Это будет стандартная проблема для всех, кто имеет" нестандартные " элементы exec path и запускает Emacs через свой графический интерфейс. Для меня OSX: MacPorts : / opt / local/... сюда входят psql, mysql, py-flakes и другие. Я мог бы и так задайте переменную для каждой надстройки или измените exec-path. Setenv необходим там, где функция elisp откладывает поиск exec-пути к оболочке. Привязка C-c C-v в режиме python использует оболочку и среду $PATH для поиска py-хлопьев.
add-to-list - это простое решение, которое предваряет путь к списку. Можно было бы привести доводы в пользу более сложного пути пререканий в вашем .файл emacs. YMMV.
Comments