WSL2, Windows, Python and Node: resolving some conflicts

Fine tuning of $PATH makes life easier

Davide Mauri
2 min readMay 1, 2022

Lately I’ve been working with Python and Node both on Windows on WSL (WSL2 specifically) and I noticed a certain number of inconveniences with WSL when having Python and Node installed on both systems. For example, some node packages were found when running node on WSL, even if I never installed them there. When that happened, the performances were horrible.

The reason is that, by default, Windows injects Windows path environment variable into WSL path.

For Node I was able to solve almost any problem using nvm, but with Python I had more challenges, so I decided to solve the problem right from at source.

First, tell WSL not to automatically add windows path to WSL. This can be done via wsl.conf file, as documented in the Advanced settings configuration in WSL.

Edit (or create if not already existing) the file:

sudo nano /etc/wsl.conf

and then add the interop setting:

[interop]
appendWindowsPath = false

Then close all WSL windows, open a Powershell or Command prompt and make sure WSL subsystem has shut down:

wsl --shutdown

Now you can re-open WSL session and check that the path doesn’t automatically contain Windows paths:

echo $PATH | tr ":" "\n"

The second — and last — step is to manually add path to the Windows tools you want to use with WSL too, for example VS Code. I’m using ZSH so I needed to update the .zshrc file and add VS Code path:

export PATH="$PATH:/mnt/c/Users/damauri/AppData/Local/Programs/Microsoft VS Code/bin"

Done. No more conflicts or slow performances, but I can still use Windows tool on WSL. Perfect!

--

--

Davide Mauri

Data Geek, Storyteller, Developer at heart, now infiltrated in Azure SQL product group to make sure developers voice is heard loud and clear. Heavy Metal fan.