A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://pygobject.readthedocs.io/en/latest/devguide/dev_environ.html below:

Creating a Development Environment — PyGObject

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.

Environment Setup# Install Dependencies#

In order to compile Python and pip install pygobject, dependencies are need for your operating system.

Ubuntu / Debian#
sudo apt-get install -y python3-venv python3-wheel python3-dev
sudo apt-get install -y gobject-introspection libgirepository-2.0-dev \
  gir1.2-girepository-3.0 build-essential libbz2-dev libreadline-dev \
  libssl-dev zlib1g-dev libsqlite3-dev wget curl llvm libncurses-dev \
  xz-utils tk-dev libcairo2-dev
Fedora#
sudo dnf install -y 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-wheel
sudo pacman -S --noconfirm base-devel openssl zlib git gobject-introspection
openSUSE#
sudo zypper install -y python3-wheel gobject-introspection-devel \
  python3-cairo-devel openssl zlib git
sudo zypper install --type pattern devel_basis
Windows#

To develop on Windows you need to have MSYS2 installed.

pacman -S --needed --noconfirm base-devel mingw-w64-ucrt-x86_64-toolchain git \
   mingw-w64-ucrt-x86_64-python mingw-w64-ucrt-x86_64-pycairo \
   mingw-w64-ucrt-x86_64-gobject-introspection mingw-w64-ucrt-x86_64-libffi
macOS#

With homebrew:

brew update
brew install python3 gobject-introspection libffi
export PKG_CONFIG_PATH=$(brew --prefix libffi)/lib/pkgconfig  # use /usr/local/ for older Homebrew installs
Install pyenv (Optional)#

pyenv lets you easily switch between multiple versions of Python.

Linux#
curl https://pyenv.run | bash
exec $SHELL
pyenv install 3.11
pyenv global 3.11
macOS#
brew install pyenv
pyenv install 3.11
pyenv global 3.11
Work on PyGObject# Platform Independent Steps#

First, check out the source code:

git clone https://gitlab.gnome.org/GNOME/pygobject.git
cd pygobject

With a local copy of PyGObject, there’s three ways to start developing:

  1. PDM, a modern Python package and dependency manager

  2. Pip, the default Python package installer

  3. Meson, use the Meson build system directly

PDM#

Make sure you have PDM 2.13 or newer installed.

Then set up the project by running:

You can run the unit tests with:

Pip#

It’s always a good idea to work from within a Python virtual environment. PyGObject is built with Meson. In order to support editable installs, Meson-python, Meson, and Ninja should be installed in the virtual environment.

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install meson-python meson ninja pycairo pytest pre-commit

Note

For Python 3.12 and newer, also install setuptools, since distutils is no longer provided in the standard library.

Install PyGObject in your local environment with the --no-build-isolation to allow for dynamic rebuilds

pip install --no-build-isolation --config-settings=setup-args="-Dtests=true" -e '.[dev]'

By default the C libraries are built in “release” mode (no debug symbols). To compile the C libraries with debug symbols, run

pip install --no-build-isolation --config-settings=setup-args="-Dbuildtype=debug" --config-settings=setup-args="-Dtests=true" -e '.[dev]'

Open a Python console:

from gi.repository import GObject

Run the unittests:

Meson#

It’s also possible to run the tests from Meson. Tests are still run with Pytest, so it’s important that Pytest is installed.

meson setup _build  # Needed only once
meson test -C _build
Contributing Changes#

First off, thank you for considering contributing to PyGObject. We really appreciate it!


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4