Sunday, March 3, 2024

Packaging your python scripts. – Yasoob Khalid


Oh hello there! Welcome to a different helpful submit. This submit goes to be about the best way to bundle your python scripts and packages for distribution on PyPI or another place. Right here I gained’t go too deep into explaining all the pieces as most of us simply have to know the fundamentals of packaging. Nevertheless i’ll offer you totally different hyperlinks for additional research.

Okay lets discuss setuptools first. What’s it? It’s a Python module which permits us to simply bundle our python scripts and modules for distribution. Nevertheless there are different packaging libraries as effectively however right here i’ll discuss setuptools solely.

So what must be the fundamental instance to indicate the utilization of setuptools? Right here you go. For fundamental use of setuptools, simply import issues from setuptools after which look beneath for the minimal setup script utilizing setuptools.

from setuptools import setup, find_packages
setup(
    title = "HelloWorld",
    model = "0.1",
    packages = find_packages(),
)

As you see we don’t should specify a lot in an effort to use setuptools in a undertaking. Simply by doing the above, this undertaking will be capable of produce eggs, add to PyPI, and robotically embody all packages within the listing the place the setup.py lives. However if you find yourself releasing your tasks on PyPI then it’s best to add a bit extra details about your self and this bundle and in case your undertaking depends on some exterior dependencies then checklist them there as effectively. Right here is one other script which may do all that:

from setuptools import setup, find_packages
setup(
    title = "HelloWorld",
    model = "0.1",
    packages = find_packages(),
    scripts = ['say_hello.py'],

    # Venture makes use of reStructuredText, so be certain that the 
    # docutils get put in or upgraded on the goal 
    # machine
    install_requires = ['docutils>=0.3'],

    package_data = {
        # If any bundle comprises *.txt or *.rst information,
        # embody them:
        '': ['*.txt', '*.rst'],
        # And embody any *.msg information discovered within the 
        # 'hiya' bundle, too:
        'hiya': ['*.msg'],
    },

    # metadata for add to PyPI
    creator = "Me",
    author_email = "me@instance.com",
    description = "That is an Instance Package deal",
    license = "PSF",
    key phrases = "hiya world instance examples",
    # undertaking house web page, if any :
    url = "http://instance.com/HelloWorld/",   

    # may additionally embody long_description, download_url,
    # classifiers, and many others.
)

I hope that is sufficient for now. Nevertheless listed below are another packaging libraries in case you had been questioning :

  1. Distutils is the usual software used for packaging. It really works fairly effectively for easy wants, however is proscribed and never trivial to increase.
  2. Setuptools is a undertaking born from the will to fill lacking distutils performance and discover new instructions. In some sub-communities, it’s a de facto customary. It makes use of monkey-patching and magic that’s frowned upon by Python core builders.
  3. Distribute is a fork of Setuptools that was began by builders feeling that its improvement tempo was too sluggish and that it was not potential to evolve it. Its improvement was significantly slowed when distutils2 was began by the identical group.
  4. Distutils2 is a brand new distutils library, began as a fork of the distutils codebase, with good concepts taken from setup instruments (of which some had been completely mentioned in PEPs), and a fundamental installer impressed by pip. Distutils2 didn’t make the Python 3.3 launch, and it was placed on maintain.

Supply: Stackoverflow

For additional research i like to recommend: http://pythonhosted.org/distribute/setuptools.html

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles