# Linux Development Environment Setup

The minimum software packages you need for setting up a development environment include git and a Python interpreter along with the pip installer. Consult the specifics for your operating system in order to get each package installed successfully.

Once you have the basic requirements in place, you will need to install Pootle’s dependencies, which come in shape of Python packages. Instead of installing them system-wide, we recommend using virtualenv (and virtualenvwrapper for easing the management of multiple virtualenvs). This way you can install all the dependencies at specific versions without interfering with system-wide packages. You can test on different Python/Django versions in parallel as well.

## Detailed setup

For installing the dependencies in an isolated environment, we will use virtualenv – more specifically virtualenvwrapper, which eases the process of managing and switching between multiple virtual environments. Install virtualenwrapper as follows for bash (examine platform specific installation instructions for other environments):

    $ sudo pip install virtualenvwrapper

virtualenvwrapper will need to be configured in order to specify where to store the created environments:

    $ export WORKON_HOME=~/envs
    $ mkdir -p $WORKON_HOME
    $ source /usr/local/bin/virtualenvwrapper.sh  # Or /usr/bin/virtualenvwrapper.sh

Note

You may want to add the above-mentioned commands and environment variables to your `.bashrc` file (or whatever file your shell uses for initializing user customizations).

Now that the commands provided by virtualenv and virtualenvwrapper are available, we can create our virtual environment.

    $ mkvirtualenv <env-name>

Replace `<env-name>` with a meaningful name that describes the environment you are creating. mkvirtualenv accepts any options that virtualenv accepts. We could for example specify to use the Python 3.3 interpreter by passing the -p python3.3 option.

Note

After running mkvirtualenv, the newly created environment is activated. To deactivate it just run:

    (env-name) $ deactivate

To activate a virtual environment again use workon as follows:

    $ workon <env-name>

First, upgrade the version of pip and setuptools as follows:

    (env-name) $ pip install --upgrade pip setuptools

Time to clone Pootle’s source code repository. The main repository lives under translate/pootle in GitHub.

Note

If you have a GitHub account, fork the main `translate/pootle` repository and replace the repository URL with your own fork.

    (env-name) $ git clone https://github.com/translate/pootle.git

Install Pootle and its development dependencies into your virtualenv. This makes it easy to run Pootle locally and is needed for various development actitivies. The `[dev]` target will install some extra packages to aid development (you can examine these in `requirements/dev.txt`).

    (env-name) $ pip install -e .[dev]

Note

Some requirements may depend on external packages. For these you may need to install extra packages on your system in order to complete their installation.

With all the dependencies installed within the virtual environment, Pootle is almost ready to run. In development environments you will want to use settings that vastly differ from those used in production environments.

For that purpose there is a sample configuration file with settings adapted for development scenarios, `pootle/settings/90-dev-local.conf.sample`. Copy this file and rename it by removing the .sample extension:

    (env-name) $ cp pootle/settings/90-dev-local.conf.sample ~/.pootle/pootle.conf

Note

To learn more about how settings work in Pootle read the settings documentation.

Once the configuration is in place, you’ll need to setup the database schema and add initial data.

    (env-name) $ pootle migrate
    (env-name) $ pootle initdb

Now ensure that you have built the assets by following the instructions for frontend development.

Finally, run the development server.

    (env-name) $ pootle runserver

Once all is done, you can start the development server anytime by enabling the virtual environment (using the workon command) and running the `pootle runserver` command.

Happy hacking!!