0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CraftLaunchのパスの件

Last updated at Posted at 2024-09-14

概要

ランチャーソフトのCraftLaunchから起動したアプリと、Win+Rで起動したアプリではPATH設定が異なっているため、動かないものがありました。それを(泥臭く)解決する方法です。

追記:

ここに書いてある方法は不要で、CraftLaunchを再起動をするだけで治りました。CraftLaunchを起動してからPATHが変わったとしても、変更後のPATHを使うわけじゃなくて、起動時点のPATHを使います。あとから入れたnodejsとか見つからないのは当たり前なんですよね、、、初歩的なことでした。

まとめと解決策

CraftLaunchからnvimを起動したときに、nodeが見つからないといわれました。調べるとnodeだけでなく、Rubyやnvmも動かず、PATHが通っていませんでした。そこでconfig.pyで次のような関数を定義、呼び出すことでパスを設定、解決できました。

config.pyの一部
    def set_path():
        paths = os.environ['PATH'].split(';')
        paths_append = [
            r'C:\Ruby-on-Windows\rbenv\bin',
            r'C:\Ruby-on-Windows\shims',
            r'C:\Users\ユーザー名\scoop\apps\pwsh\current',
            r'C:\Users\ユーザー名\scoop\apps\nvm\current',
            r'C:\Users\ユーザー名\scoop\apps\nvm\current\nodejs\nodejs'
        ]
        os.environ['PATH'] = ';'.join(list(set(paths + paths_append)))

    set_path()

ちょっと詳しく

CraftLaunchとは

CraftLaunchはキーボードだけで操作できるランチャーアプリです。

アプリの説明をはこのサイトがわかりやすいと思います。→ 【PC作業効率化】おすすめフリーソフト「CraftLaunch」 – 微風 on the web…
公式ページ:craftware - CraftLaunch

アプリ起動だけでなく、VMの操作(起動・停止・スナップショット作成)、特定のサイズ指定で画面のスクショ、よく変更するファイルを開く、などなどに使いまくってます、、、が、今回、困ったことがおきました。

なにが起きたか

僕はnvimを使ってます。で、CraftLaunchにnvimを登録して起動したら[coc.nvim] *node* is not executable, checkout https://nodejs.org/en/download/というエラーが出ました。あらー、と思って:checkhealthするとなんだかよくわからんエラーがでます。

Running healthchecks...
E5009:無効な 'runtimepath' です                                                                                         Error executing lua: function health#coc#check[3]..<SNR>55_checkInitialize, line 5: Vim(call):E118: 関数の引数が多過ぎます: <SNR>55_report_error                                                                                                stack traceback:                                                                                                                [C]: in function 'call'                                                                                                 ...pps/neovim/current/share/nvim/runtime/lua/vim/health.lua:429: in function '_check'                                   [string "<nvim>"]:1: in main chunk  

では、とCraftLaunchから登録したpwsh.exeを起動して、そこからnvimを立ち上げても同様。nvimを閉じてnode -vしたところアプリが見つからないというエラー。nvmも同様。pythonは見つかる、、
PATHを確認するとこんなでした。nodejsがPATHにないです。

> $env:path
C:\Users\(ユーザー名)\OneDrive\デスクトップ\PortableApps\CraftLaunch/lib;C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Windows\System32\OpenSSH\; C:\Users\(ユーザー名)\scoop\apps\python\current\Scripts; C:\Users\(ユーザー名)\scoop\apps\python\current; C:\Users\(ユーザー名)\scoop\shims; C:\Users\(ユーザー名)\AppData\Local\Microsoft\WindowsApps;

Win+Rでcmd.exeを起動してPATHを確認するとあります

> echo %PATH%
C:¥Users¥(ユーザー名)¥OneDrive¥デスクトップ¥PortableApps¥CraftLaunch/lib;C:¥Windows¥system32;C:¥Windows;C:¥Windows¥System32¥Wbem;C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥;C:¥Windows¥System32¥OpenSSH¥;C:¥Users¥(ユーザー名)¥scoop¥apps¥nvm¥current;C:¥Users¥(ユーザー名)¥scoop¥apps¥nvm¥current¥nodejs¥nodejs;C:¥Users¥(ユーザー名)¥scoop¥apps¥python¥current¥Scripts;C:¥Users¥(ユーザー名)¥scoop¥apps¥python¥current;C:¥Users¥(ユーザー名)¥scoop¥shims;C:¥Users¥(ユーザー名)¥AppData¥Local¥Microsoft¥WindowsApps; 

CraftLaunchにprint(os.environ['PATH'])する関数を登録して呼び出すと、nodejsのは入ってません。
きっとCraftLaunchは何かの理由でPATHに入れてくれないんだ、と想像しました。
(→ じつはこれは間違いで、単にCraftLaunchの起動時期が問題だっただけでした。)

PATHを登録する関数の追加

登録されないなら自分で登録してしまえばいい、ということでconfig.pyのなかでPATHをセットするようにしました。手順で考えたのは

  1. 今のPATHをos.environ['PATH']でとってきてlistにする
  2. 追加したいパスのlistを作る
  3. 二つのlistをつないで、重複を省く
  4. listの各要素を「;」でつないでい一つの文字列にする
  5. os.environ['PATH']に登録する

で、できたのが最初のまとめと解決策の関数です。nodejsだけでなくRubyも抜けていたので追加してあります。

解決した!けどこれは根本的にいろいろ違っていた

追記に書いた通り、こんな関数使わずともCraftLaunchの再起動で解決します。いろいろ知ることができてよかったけど、なんだか視野が狭くなってたなーと反省です。

ところで、nvmとrbenvもWindowsで使えます!(全然関係ない)

nvm : scoop install nvm
rbenv : RubyMetric/rbenv-for-windows: rbenv for Windows - Manage your app's Ruby environment on Windows (scoop install vcredistが必須)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?