npm-check-updatesのコマンドをncuと打つとNVIDIA NsightComputeと被る問題
公式のGithubにも似たようなissuesがあったりします。
以下のnvidiaのCUDA系のツールがコマンドncu
を打つことで使えるため、npm-check-updatesのncu
と被ることになります。。
筆者の環境では、システム環境変数を見ると「C:\Program Files\NVIDIA Corporation\Nsight Compute 2020.2.1\」というものが設定されていて、こちらが優先されてしまうので、このフォルダにあるncu.bat
が起動してしまいます。
これ、なんでbatファイルをncuという名前にしたんでしょうね~。NVIDIAのCUDAでncuですかね。
NsightCompute自体が悪いわけではありません。機械学習など、グラフィック以外にGPUの機能を使うための機能がCUDAで、NsightComputeはそのCUDAのパフォーマンスをプロファイリングしてくれるものです。
大体の人はグラボをTensorFlowとかに使ってみたくてドライバを入れたりなんて時に一緒に入ってしまうのだと思います。
名前が被ってさえいなければ…、というは話でもあります。
解決策1 コマンドで「npm-check-updates」と打つ
毎回めんどくさいのですが、ncu
と打たずにnpm-check-updates
と入力すれば動きます。
公式のissuesにある方法がこれです。
ただ、毎回npm-check-updates
と打つのは効率が悪いです。
解決策2 Windows10のシステム環境変数を変更してしまう
環境変数は間違って消してしまうとPC自体の動作が意図しないものになったりするので、もし触る場合は気をつけてください。
こちらはWindows10の話になります。
PCに詳しくない人にとって、環境変数を触るのはリスクが高い行為です。
ですが、これをしておけばパスをnpm側のnpm-check-updatesに向けることができます。
Windows10では以下でシステム環境変数を編集できます。
設定 ⇒ システム ⇒ 詳細情報 ⇒ 詳細情報内の詳細設定 ⇒ 環境変数ボタン ⇒ システム環境変数のPathを選択して編集ボタンを押す
pathの中に「C:\Program Files\NVIDIA Corporation\Nsight Compute 2020.2.1\」がありますが(これは人によってフォルダ名が違います。日付部分が違うことが多いです)、これを消してしまえばnpm-check-updateが優先されます。
消さなくても「C:\Users\自分のユーザー名\AppData\Roaming\npm」をNsight Computeの上にpath設定すればnpm側が優先されます。
PCを再起動し、VSCodeを使っている場合は、既存のターミナルは一度落として、新しいターミナルを立て直してから使うと、環境変数が反映されています。
まとめ
- npm-check-updatesとフルネームでコマンドを打つ
- システム環境変数をいじる
使う頻度が高いほうを優先して選べは良いと思います。Nsight ComputeはGUI版があるので、コマンドではnpm-check-updatesを優先する、とか。
筆者は環境変数をいじってnpm-check-updatesを優先させました。現状npm-check-updatesを使うことが圧倒的に多いので、こちらの方が便利です。
Discussion