<!-- Love localstack? Please consider supporting our collective:
👉  https://opencollective.com/localstack/donate -->

# Type of request: This is a ...

[X] bug report
[ ] feature request

# Detailed description

Trying to start localstack (0.11.6) that's been downloaded on a Windows 10 machine with the help of pip. In fact, trying to run just: `localstack`, which should print the usage, results in the same output.

Output from a PowerShell prompt:

```
P:\>python C:\Users\user\AppData\Local\Programs\Python\Python39\Scripts\\localstack start
'uname' is not recognized as an internal or external command,
operable program or batch file.
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\Scripts\localstack", line 18, in <module>
    cli.main()
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\localstack\utils\cli.py", line 130, in main
    bootstrap.load_plugins(scope=bootstrap.PLUGIN_SCOPE_COMMANDS)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\localstack\utils\analytics\profiler.py", line 153, in wrapped
    from localstack.utils.common import now_utc
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\localstack\utils\common.py", line 4, in <module>
    import pwd
ModuleNotFoundError: No module named 'pwd'
```

From my understanding windows might not be compatible with the `pwd` module.

Official Python docs:

> This module provides access to the Unix user account and password database. It is available on all Unix versions.

But this is just guesswork...

---

I've tried with lower version of localstack (0.11.2 and 0.11.5) on the same setup, and they work just fine.

### Versions

* Python 3.9.0
* pip 20.2.3
* Docker version 19.03.13, build 4484c46d9d
* Windows 10 Enterprise, Version 1809, OS build 17763.1457

## Expected behavior

Localstack starts

## Actual behavior

Localstack does not start

# Steps to reproduce

## Command used to start LocalStack

`localstack start`

## Client code (AWS SDK code snippet, or sequence of "awslocal" commands)

none

elif nw_protocol == socket.SOCK_STREAM:
                result = sock.connect_ex((host, port))
                if result != 0:
                    return False
    if 'tcp' not in protocols or not http_path:
        return True
    url = '%s://%s:%s%s' % (protocol, host, port, http_path)
    try:
        response = safe_requests.get(url, verify=False)
        return not expect_success or response.status_code < 400
    except Exception:
        return False
def wait_for_port_open(port, http_path=None, expect_success=True, retries=10, sleep_time=0.5):
    """ Ping the given network port until it becomes available (for a given number of retries).
        If 'http_path' is set, make a GET request to this path and assert a non-error response. """
    def check():
        if not is_port_open(port, http_path=http_path, expect_success=expect_success):
            raise Exception()
    return retry(check, sleep=sleep_time, retries=retries)
def get_free_tcp_port(blacklist=None):
    blacklist = blacklist or []
    for i in range(10):
        tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        tcp.bind(('', 0))
        addr, port = tcp.getsockname()
        tcp.close()
        if port not in blacklist:
            return port
    raise Exception('Unable to determine free TCP port with blacklist %s' % blacklist)
def sleep_forever():