Skip to main content

A small example package

Project description

Overview

The goal of this activity is to introduce you to python's packaging system called PyPi (Python Package Index). PyPi maintains a directory service for contributed packages that is accessible by pip whenever the tool is used to install a new package.

Instructions

Begin by creating a folder for your package under src. Because the name of your package has to be unique, add your name as a suffix for your package name.

src/pck_<your_name>

Next, create the following file structure for your package.

src
|__pck_<your_name>
   |__ __init__.py
   |__ mod.py
test.py
README.md
pyproject.toml

Leave init.py blank. init.py is required to import the directory as a package, and can be empty.

Add the following code in mod.py, which will be the single module in your package.

def add_one(number):
    return number + 1

Add the following code in test.py. It will not be a proper test, just a validation that the package can be properly imported and used.

from pck_<your_name> import mod

print(mod.add_one(5))

After the validation, add the following in pyproject.toml, making sure to update <your_name>.

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "pck_<your_name>"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

Write something about your project in README.md (it cannot be left blank).

This is a test project to learn something new. Added it here instead of creating a new read me.

Next, try to build your project (from src) using:

python3 -m build

If you get an error saying "No module named build" it means that you need to install build using pip3.

After the build, a dist folder will be created.

Next, it is time to publish your package so others can use. You need an account in https://pypi.org/. Then, go to https://pypi.org/manage/account/ and scroll down so you can click on the "Add API token" button. Give your token a name and select "Entire account (all projects)" as the scope. Copy the token and use it to run the following:

python3 -m twine upload -u __token__ -p <replace with your token> dist/*

You can repeat this process multiple times if needed. For example, you may want to update your package. To do that, update the version of your package in pyproject.toml. Next, remove the dist folder and rebuild. Finally, upload the new version.

To test the installation and use of your package from PyPi, create a virtual environment and copy test.py and see if you can run it.

More Information

PyPi user guide is available here.

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

pck_brendan-0.0.1.tar.gz (2.2 kB view details)

Uploaded Source

Built Distribution

pck_brendan-0.0.1-py3-none-any.whl (2.7 kB view details)

Uploaded Python 3

File details

Details for the file pck_brendan-0.0.1.tar.gz.

File metadata

  • Download URL: pck_brendan-0.0.1.tar.gz
  • Upload date:
  • Size: 2.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pck_brendan-0.0.1.tar.gz
Algorithm Hash digest
SHA256 5efd7fa3ea4712d6a6cbb8a2e91c4afb959d453e16bac06ae581316f365162f6
MD5 7a079cb11ff42ca4794f1f4b23123abd
BLAKE2b-256 c6123dde90e1dc2b4e5002b476f3cfdb5f201c56862ed86ba65d5e71de12fbf3

See more details on using hashes here.

File details

Details for the file pck_brendan-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pck_brendan-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 2.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pck_brendan-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 99f6b601101555eeb568688c8700506fd88b96914b204a3765c510e4672f79c4
MD5 0846981be624169ebe6c542819184e06
BLAKE2b-256 f3bd79d0972e37b31eef18322ba7a5035d122eb171fda93ceba39186b7555101

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