LoginSignup
1
1

More than 3 years have passed since last update.

Emacs で環境変数を引き継ごう

Last updated at Posted at 2021-01-25

Emacs上のlspでpython-language-serverを使おうとしたら、こんなエラーが‘lsp::pyls‘バッファに出てpylsの起動に失敗してしまいました。

Traceback (most recent call last):
  File "/home/pluser/.local/bin/pyls", line 6, in <module>
    from pyls.__main__ import main
ModuleNotFoundError: No module named 'pyls'

私の環境では、Pythonのインストールパスを非標準なものへと変更しており、Pythonライブラリの検索パスをPYTHONUSERBASE環境変数でシェルに別途設定しています。
Emacs上のlspクライアントはEmacsの環境変数をそのまま引き継いでクライアントとの通信を行うので、何らかの理由(シェルではなくデスクトップ環境から起動した、など)で普段とは異なる環境変数でEmacsが起動されてしまうと、今回のようなケースではPYTHONUSERBASEなどの環境変数が設定されておらず、LSPの起動や実行に支障をきたしてしまいます。

LSPのプロセスはEmacsの環境変数を引き継ぐので、手っ取り早く対処するには、Emacsを適切な環境変数で起動してあげるとよいです。シェルの環境変数がきちんとしている場合には、デスクトップエントリなどを編集して、 /bin/bash -c 'emacs' としてEmacsを起動するようにすると良いでしょう。

または、Emacsがプロセス起動する時の環境変数であるprocess-environment変数を調整すると良いでしょう。(setenv "PYTHONUSERBASE" "/path/to/python") などとすると任意の環境変数を設定できます。

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1