10

I have Python 3.6 installed on my Windows computer. I installed the Windows Subsystem for Linux (WSL). When I type python into my Ubuntu terminal, I'm told I'm using Python 2.7 (which I imagine comes pre-installed on Ubuntu).

How can I use the same Python for both Windows and Linux, so that if I install a new package with pip from either, I can access it from either? I want the two systems to share the same Python.

It seems as though following something along the lines of creating an alias might work, but I'm pretty sure the pip command will remain the same (referring to Python 3.6 on Windows and Python 2.7 on Linux), as might other functionality.

Pro Q
  • 228
  • 3
    fyi: Ubuntu comes with both Python & Python3. The default for most versions is still python 2.7.x (executed with python), and to use the python 3.6.x interpreter you use python3 – guiverc Jun 08 '18 at 06:53
  • @guiverc thanks for the info! It looks like they're somewhat different though in that on Windows I can just say pip and it does Python3 stuff, whereas on Linux, if I do pip3 it says it's not installed. – Pro Q Jun 08 '18 at 06:55
  • I don't code in python & thus seldom use it. pip & pip3 are installed on mine (by default I suspect), but I don't use windows/wxl so can't help you further sorry. – guiverc Jun 08 '18 at 06:58
  • pip3 indeed may be non default package, in which case you may need to install it via sudo apt-get install pip3 or python3-pip. No on laptop, hence can't suggest the exact package of the top of my mind, bit that's the general form for Python 3 packages in Ubuntu and Debian repositories. In general, I'd suggest familiazing with apt utility, as a lot of Python packages on pypi are also available in Ubuntu official repositories. – Sergiy Kolodyazhnyy Jun 08 '18 at 07:09
  • @SergiyKolodyazhnyy If I do that, and I do pip3 freeze will I get the same output as doing pip freeze on Windows Terminal? I would like to get the same output. I'm fairly familiar with Ubuntu and installing software, I'd just like to make sure I'm not duplicating things and confusing myself :P – Pro Q Jun 08 '18 at 07:12
  • Considering that pip on Windows as you say refers to Python 3.6 version and pip3 on Ubuntu to the same version, it's logical to assume they'll be the same. If you're generating requirements file, just beware that on Windows line endings in text files are different than on Linux, hence you may need to use dos2unix utility to convert them. Otherwise, I don't think there's any need to worry. Consider checking whether some packages may be Windows-specific also. – Sergiy Kolodyazhnyy Jun 08 '18 at 07:20
  • It doesn't look like they're the same at all... Running Python3 on Ubuntu tells me I'm running Python 3.5. Running Python on Windows tells me I'm running Python 3.6. I think they're completely different versions. Still trying to figure out how to use one on the other or merge them in some way. – Pro Q Jun 08 '18 at 22:33

2 Answers2

6

You can use the version of python used in windows by typing in python.exe instead of python3. This is not recommended and there's no real reason to do so because you'll face several problems with

  • CR/LF line endings
  • Running python in this way does not preserve the path, hence, say you have test.py in the current WSL folder and run python.exe test.py. Python will be started in its root directory and will be unable to locate test.py

Python behaves identically, like in the case of pip freeze e.t.c and will produce the same output if you're running in the same virtualenv and hence just using the ubuntu version of python will work fine.

As of 18.04, WSL ubuntu has Python 3.6.5 preinstalled, and you can see both the windows and ubuntu python being used below

Amith KK
  • 13,412
  • I did not install python on windows but on Debian/Wsl. How can I use it in vscode windows? It works in wsl:remote in vscode. In powershell wsl python3 works. – Timo Dec 06 '21 at 20:02
2

I followed these steps. It worked for me. These steps installs python3 on WSL Ubuntu

sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get -y install python3-pip 

I got help from here - [https://askubuntu.com/a/672836/876942]. Following these steps installs python 2. But then I installed python 3 using [sudo apt-get -y install python3-pip] in last step.