Make your first Python Package and publish it to PyPi!

Hello there! This blog post is on how you can publish your first Python package.
PS: It is really easy!
What are Python packages?
A bunch of reusable code scripts can be called a package, it's something like this.
You've probably written some awesome code, which can be reused, and you want to share it with the world!
This tutorial is just for that! While GitHub is a great place to distribute code, Python Package index let's you directly import code without having to copy it into your directory!
Prerequisites
  • Basic Python knowledge.
  • Linux or Macintosh OS, unfortunately publishing a package from Windows is quite hectic.
  • A PYPI account
  • A GitHub account
  • And we should be good to go!
    Here I will be showing you how I published pysherlock:
    Step 1: Make a new folder named after your package.
    In my case it was pysherlock, In your folder make another folder with the same name as the parent folder.
    This is where the code will go.
    There will be two files in here:
  • _init_.py
  • main.py
  • _init_.py is to import all your functions from the main.py file
    main.py is where all your code will go.
    Step 2: Write some code
    For this tutorial let's write some basic code.
    Assume that your package's name is 'pyword'(very creative I know)
    # main.py
    def wordrep(word:str):
         print(word)
    So what this basically does is, when a string is passed as an argument it simply repeats the word entered. Also you might face an indentation error, which can easily be fixed.
    Now to the _init_.py file, remember to add the underscores before and after init.
    #____init.py____
    from pyword.main import wordrep
    And boom your package is ready for publication, now for the formalities.
    Step 3: Push to GitHub
    Publish your code to GitHub by making a repo
    Step 4: Other files config
    This how your directory must look:
    -pyword
    -pyword
    -_init_.py
    -main.py
    -setup.py
    -README.md
    -LICENSE.txt
    -setup.cfg
    It might look complex but it's actually quite easy.
    The setup.py file is a python file whiih basically tells the PYPI repo what your package is.
    Let's get started with it
    import setuptools
    
    # Reads the content of your README.md into a variable to be used in the setup below
    with open("README.md", "r", encoding="utf-8") as fh:
        long_description = fh.read()
    
    setuptools.setup(
        name='pyword',                           # should match the package folder
        packages=['pyword'],                     # should match the package folder
        version='0.1',                                # important for updates
        license='MIT',                                  # should match your chosen license
        description='Baically repeats what you say.',
        long_description=long_description,              # loads your README.md
        long_description_content_type="text/markdown",  # README.md is of type 'markdown'
        author='your name',
        author_email='your email address',
        url='your github repo name', 
        project_urls = {                                # Optional
            "Headless Chrome": "your github repos issues page"
        },
        install_requires=['requests','qrcode','wikipedia','beautifulsoup4'], #these are filler packages, you need to fill them with the packages your python package will require to function                 
        keywords=["screenshot", "pyautogui", "scrot", "raspberry pi"], #descriptive meta-data
        classifiers=[                                   # https://pypi.org/classifiers
            'Development Status :: 3 - Alpha',
            'Intended Audience :: Developers',
    
            'License :: OSI Approved :: MIT License',
            'Programming Language :: Python :: 3',
            'Programming Language :: Python :: 3.7',
            'Programming Language :: Python :: 3.8',
            'Programming Language :: Python :: 3.9',
        ]
    
        )
    Now to the README.md file, this file is to be written by you, it's basically short documentation for your package.
    Here's a really simple website I use for writing my readme files.
    Make a read me
    License.txt is again a file you must choose for your package, depending on what your package does you can choose a License and use it.
    Use this link to know what License fits your package.
    Open source initiative
    Now to the setup.cfg file
    [metadata]
    description-file = README.md
    That is all!
    Now that all your files are ready let's publish it!
    First in your Home directory create a file names .pypirc
    It should contain the following info:
    [distutils]
    index-servers = 
           pypi
    [pypi]
    repository: https://upload.pypi.org/legacy/
    username: your_username_from_pypi
    password: your_password_from_pypi
    And save it, the "pypi" in line 3 should be placed after a single 'TAB' key press.
    This basically enters the data required to push your package into the pypi repository.
    Step 5: Final step, uploading to pypi
    Now towards the final steps
    pip install twine
    After this is done, cd into the directory and type the following into your terminal.
    python3 setup.py sdist
    This builds the distribution file required.
    Do not tamper with this File.
    After this is done type the following:
    python3 -m twine upload dist/*
    And that's it!
    There should be a link below saying where your package has been published.
    Click on it and it will lead to your packages pypi page, install it and test it out!
    Happy Coding and if any doubts don't forget to to comment and ask your doubts.
    Also please do leave a like and follow me for more such tutorials and articles related to programming.

    26

    This website collects cookies to deliver better user experience

    Make your first Python Package and publish it to PyPi!