About a month ago I asked this list for advice on developing
Python/Linux web services on a team which had been entirely C#/Windows.
I was very grateful for the replies. I thought I'd let you know how it's
panning out, especially with using Windows Subsystem for Linux (WSL.)
I stuck to my guns, and deploy the Python service on Linux. Despite
that, I use Windows 10 on my laptop (against my personal inclination),
so that I can install Visual Studio and get a version of everyone else's
C# services running locally. Conversely, if anyone else needs to run my
Python services, they just replicate my setup (described below.) So we
only have one kind of development environment across the whole team.
My intention was to do development on a Linux VM. But I started out
using WSL instead, as much to investigate what it is as anything. I
didn't expect this would last long, but it's been 6 weeks now, and will
probably stay for the foreseeable future. WSL is a new component in
Windows that re-implements Posix system calls within the NT kernel, and
links ELF binaries against them, so it can run compiled native Linux
executables. WSL provides a full Ubuntu filesystem, complete with
permissions, symlinks, fifos and everything, you'd expect. This
filesystem has a /mnt/c for accessing your C drive.
So I'm able to do all my development on that. Enable WSL, sudo apt
install ansible, and then you can run my ansible commands to create a
working dev environment, deploy to localhost or elsewhere. Pip installs
that require compilation work fine, and my service runs under uwsgi
quite happily. No VMs required.
There are wrinkles with using WSL though:
* It's console apps only, no X. (Although apparently it's easy to get X
to run, and some simple graphical applications work)
* I had problems using Upstart (We're on Ubuntu 14.04, for other
reasons), and suspect Systemd would suffer similarly. Because there
isn't really a 'boot process'. So for now, in local envs, I just
start/restart my service manually on deploy, using
"/sbin/start-stop-daemon", which is new to me, but has performed
flawlessly.
* Probably because of the Upstart/Systemd issues, there isn't a
logrotate process running. Instead of getting one running, for now I'm
cheating and simply not rotating logs in local envs.
* PostgreSQL doesn't run. Some system calls aren't implemented that it
needs related to shared memory. So as a workaround, I installed the
Windows version of PostgreSQL. Requires zero config and my Linux client
connects to it on localhost just fine.
* Containers don't work. Lots of system calls they need are not
implemented, and I don't know where this is on Redmond's priorities.
* The built-in Windows terminal is almost as bloody awful as you
remember. At first I tried the popular and very flexible 3rd party
terminal 'con-emu', but it has problems with WSL, and despite much
wrangling, I couldn't get it to work reliably with all three of {WSL,
256 colours, special keys like cursors}. So I fell back to wsl-terminal,
a new terminal project written specifically to work with WSL. It's
limited, but not in ways that bother me, and everything works out of the
box. I installed my dotfiles repo, and fired up NeoVim, in solarized
colors, with all my plugins, and everything works great.
* Having said that, syncing the Windows clipboard to the X one is
problematic, not least because X is not running! Apparently this is
fixable, because it's easy to get X running, but I've been too lazy, and
have been working around it by occasionally *dragging* selected text
between Windows/Linux applications, instead of using the clipboard.
I hope this is useful or interesting if you find yourself in a similar
situation.
Best regards,
Jonathan Hartley
--
Jonathan Hartley
tart...@tartley.com
+1 507-513-1101
_______________________________________________
python-uk mailing list
python-uk@python.org
https://mail.python.org/mailman/listinfo/python-uk