Creating a Development Environment¶
This describes how to setup a development environment for working on a project that uses PyGObject, or for working on PyGObject itself. Please follow the instructions on “Getting Started” first, as they are a pre-requirement.
Pipenv Setup¶
Install Dependencies¶
In order to compile Python and pip install pygobject, dependencies are need for your operating system.
| Ubuntu | Fedora | Arch Linux |
| Windows | macOS | openSUSE |
Ubuntu / Debian¶
sudo apt-get install -y python3-venv python3-wheel python3-dev
sudo apt-get install -y libgirepository1.0-dev build-essential \
libbz2-dev libreadline-dev libssl-dev zlib1g-dev libsqlite3-dev wget \
curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libcairo2-dev
Fedora¶
sudo dnf install -y python3-venv python3-wheel
sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel git python3-cairo-devel \
cairo-gobject-devel gobject-introspection-devel
Arch Linux¶
sudo pacman -S --noconfirm python-virtualenv python-wheel
sudo pacman -S --noconfirm base-devel openssl zlib git gobject-introspection
openSUSE¶
sudo zypper install -y python3-venv python3-wheel gobject-introspection-devel \
python3-cairo-devel openssl zlib git
sudo zypper install --type pattern devel_basis
Windows¶
pacman -S --needed --noconfirm base-devel mingw-w64-i686-toolchain git \
mingw-w64-i686-python3 mingw-w64-i686-python3-cairo \
mingw-w64-i686-gobject-introspection mingw-w64-i686-libffi
macOS¶
No extra dependencies needed.
Install pyenv¶
pyenv lets you easily switch between multiple versions of Python.
| Linux | macOS |
| Windows |
Linux¶
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.6.4
Windows¶
TODO: currently no way to install pyenv in Windows. So we’ll use a normal virtualenv instead.
virtualenv --python 3 myvenv
source myvenv/bin/activate
macOS¶
brew install pyenv
pyenv install 3.6.4
Install pipsi¶
pipsi is a wrapper around virtualenv and pip which installs scripts provided by python packages into separate virtualenvs to shield them from your system and each other. We’ll use this to install pipenv.
| Linux | macOS |
| Windows |
Linux¶
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - --src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
pipsi install pew
pipsi install pipenv
Windows¶
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - --src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
Add C:/Users/.local/bin to your path via Control Panel->All Control Panel Items->System->Advanced System Setttings->Environment Variables
pipsi install pew
pipsi install pipenv
macOS¶
With homebrew:
brew install pipenv
With pipsi:
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - --src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
pipsi install pew
pipsi install pipenv
Projects with PyGObject Dependencies¶
If you are going to work on a project that has PyGObject as a dependency, then do the following additional steps:
git clone <url/projectname.git>
cd projectname
pipenv --python 3
pipenv install pycairo
pipenv install pygobject
pipenv shell
Work on PyGObject¶
Platform Independent Steps¶
If you are going to work on developing PyGObject itself, then do the following additional steps:
git clone https://gitlab.gnome.org/GNOME/pygobject.git
cd pygobject
pipenv --python 3
pipenv install pytest
pipenv install flake8
pipenv install pycairo
pipenv shell