Skip to main content

Pip handling for tiamat projects

Project description

Tiamat Pip

Pip handling for tiamat projects

Setup

In order to be able to pip install packages which can be used with your tiamat packaged application you need to add tiamat-pip as a dependency and your run.py should look similar to:

#!/usr/bin/env python3

import sys
import multiprocessing

import tiamatpip.cli
import tiamatpip.configure

import mainapp

# Configure the path where to install the new packages
tiamatpip.configure.set_user_site_packages_path("THIS SHOULD BE A HARDCODED PATH")


def main(argv):
    # Let's see if we should be handling pip related stuff
    if tiamatpip.cli.should_redirect_argv(argv):
        tiamatpip.cli.process_pip_argv(argv)
        # You can choose to `return` but there's really no need since the pip command
        # interceptions will trigger a `sys.exit` with the appropriate exit code.

    # If we reached this far, it means we're not handling pip stuff
    # Your application logic can resume

    mainapp.main(argv)
    sys.exit(0)


if __name__ == "__main__":
    if sys.platform.startswith("win"):
        multiprocessing.freeze_support()
    main(sys.argv)

Usage

When your package is compiled with tiamat and includes tiamat-pip, the pip commands get intercepted and the code logic runs within your packaged binary python runtime.

All pip commands and their respective CLI flags are supported.

Showing the pip usage and help

your-project-binary pip --help
your-project-binary pip install --help

Installing a python package

your-project-binary pip install foo
your-project-binary pip install foo>=2.1.0

Listing installed packages

your-project-binary pip list

This will list all of the python packages that were installed using pip, which, are not included in the binary.

Listing packages shipped with the binary

If you want to know which packages, and their respective versions, were shipped with the tiamat binary, issue the following command:

your-project-binary pip frozen

This command is not supported by pip. We intercept the call and get the package listing from the right place. The CLI flags for this command are the same as for pip list.

Uninstalling a package

your-project-binary pip uninstall foo

ATTENTION: Only the packages installed by pip can be uninstalled. The packages that were shipped with the binary cannot be uninstalled.

Known Issues

  • Getting the version of an upgraded package using pkg_resources.get_distribution(pkgname).version returns the version of the package that was shipped with the tiamat binary and not the upgraded package version. See #11 for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiamat-pip-1.10.1.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

tiamat_pip-1.10.1-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

Details for the file tiamat-pip-1.10.1.tar.gz.

File metadata

  • Download URL: tiamat-pip-1.10.1.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.12

File hashes

Hashes for tiamat-pip-1.10.1.tar.gz
Algorithm Hash digest
SHA256 5c0848de56e5dfedeb638389ef1ca8788aecf51e89439b7278baadf0ee87058f
MD5 0e3f1b79c13f9cef60e49efdd8a91fb0
BLAKE2b-256 423213151d265f70e11ca30d24c0f1a4c72f83af43b088a5ecb0a42dfb31a27b

See more details on using hashes here.

File details

Details for the file tiamat_pip-1.10.1-py3-none-any.whl.

File metadata

  • Download URL: tiamat_pip-1.10.1-py3-none-any.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.12

File hashes

Hashes for tiamat_pip-1.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b4f3e05a5f0d723d1e6f365dd1a447b492f4c9a5b39209d3267525e6dd074447
MD5 1173035a44ae5a80b34428dfd8753776
BLAKE2b-256 2892eef0d50ab3d54814d9681f4a01a8e02084a10c279dab08f0a893530af561

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page