While PythonAnywhere is very dope, it has some limitations. This article only describes limitations that exist on all accounts, not limitations that can be removed by upgrading your account plan.

Root access

PythonAnywhere does not provide access to the root user in the Linux environment. Users are only able to access their home directory, /tmp, and some parts of /var. According to this forum post, this limitation exists to make the system more manageable by the PythonAnywhere developers, which allows them to add more features which makes PythonAnywhere easy to use.

This limitation is very easy to work around. When you have to install something that usually requires root access to install, you can usually configure it to install somewhere in your home directory instead of the default directories in /usr. For projects that require you to run an executable called "configure" when building it, you can use the --prefix option like this:

./configure --prefix=/home/user/software

This results in the creation of directories such as software/bin.

Web Apps

PythonAnywhere does not allow you to do advanced server configuration for web apps and only allows Python to be used, but this is for simplicity. The only things you can configure are:

  • The application callable

  • A virtualenv to run the web app in

  • Working directory

  • Force HTTPS

  • Password protection

  • Domain name stuff (only for custom domains)