Skip to main content

An NLP python package for computing Boilerplate score and many other text features.

Project description

Your First Python Package on PyPI

Reference Blog: https://towardsdatascience.com/an-end-to-end-guide-to-publish-your-python-package-bdb56639662c

Typing SVG

Step 1

Go to the following two websites to register your own account, respectively.

Note: I highly recommend trying your package on the test site first to avoid mistakes in the uploading process. Since any change, you make to your package on PyPI is not revertable, uploading errors may lead to a malfunctioning patch for your package. You want to avoid that!!

Step 2

Fork this repository to your own GitHub account and make it available in your local. You can make the most changes on GitHub, but you will need to publish your package via cmd with those files available in local.

And here is the list of the core files you will need:

  • src
    • __init__.py
    • your_main_code.py (This is only one module, if you have multi-modules included in this package, you probably want to create subfolders for them. For details, check the OPTIONAL part following this section.)
  • setup.py
  • README.md
  • MANIFEST.in
  • LICENSE
  • pyproject.toml
  • CHANGELOG.md

I know that's a lot. But bear with me. You only need to make necessary changes to some of them, and the rest will stay as default.

OPTIONAL - Multiple Modules

Suppose you have multiple classes with functions created in separate files. You want to make the folders (or subfolders) following this convention:

  • Lib1

    • __init__.py
    • _Class1.py
    • _Class2.py
  • Lib2

    • ...
    • ...

Inside each folder, update the "__init__.py" by doing this:

from ._Class1 import Function1
from ._Class1 import Function2
from ._Class2 import Function1
... 

In the main folder, update the "__init__.py" by doing this:

from Lib1._Class1 import Function1
from Lib1._Class1 import Function2
from Lib1._Class2 import Function1
... 

Then the users will be able to import your library properly like this:

from YourPackage.Class1 import Function1

If You want to import something from the main (previous) folder, here is what you should do:

from .._ClassFromThePreviousFolder import Function1

Consider adding a list in your "__init__.py", so that the users can check what functions are available:

__all__ = [ 'Function1',
            'Function2',
            ...,
            'FunctionN'
]

Step 3

Install the following python package in your cmd:

pip install setuptools
pip install twine
pip install wheel
pip install pytest # optional

You will need them later.

Step 4

Do the following changes in ANY order you want:

  1. Replace your_main_code.py in src folder with your own python package and leave "__init__.py" as it is.
  2. Make changes to setup.py, and instructions included in that file.
  3. Pick your own license.
  • Open the LICENSE file, click on Edit, click "Choose a license template", and select the license fullfills your needs.
  • If you have no idea which license works for you, you can use the MIT license, which is one of the most common choices.
  • Or, you can use this link to pick one: https://choosealicense.com/
  1. Update CHANGELOG.md to reflect version information
  2. Optional: create a "test.py" and put the file in the tests folder. Or you can remove the whole folder if you are confident that everything works great in your module.
  3. Delete everything in this "README.md" file, and update the file with the long decription of your package.

Step 5

You have multiple choices for step 5 to perform the rest of the steps. Here are two examples:

  1. Do it in cmd - Command Prompt
  • In your local, open the cmd, navigate to the directory where your package is and type the following:
# First, change root disk
C:\User\Yourname> d:

# Second, navigate to the folder
D:\> cd D:\my_works\Your-First-Python-Package-on-PyPI
  1. Do it in the Jupyter Notebook terminal:
C:\User\Yourname> jupyter notebook --notebook-dir D:/my_works/Your-First-Python-Package-on-PyPI

Step 6

In this step, we will use the following code in cmd/terminal to build your package:

python setup.py sdist bdist_wheel

Once you run the code, you will see the following two folders in the current directory:

  • build
  • dist

Under the dist folder, you will see a 'tar' file called "TheNameofYourPackage-TheVersionofYourPackage.tar.gz". At this point of time, if you do not need to publish your code in public; instead, if you just want to share your code with your friends or colleagues, you may just share this file with them. All they need to do is to do "pip install" to use your code:

pip install relative_path_to_yourpackage.tar.gz  

OPTIONAL - Test Your Package on PyPI

Now, you are about to publish your package to PyPI. Before you make it public, one more thing you may want to do is to test if your package will work as expected once people download them. What you can do is to create a folder called "test", and create a test.py, which includes some sample implementations of your package. Then, type "pytest" in your cmd/terminal. If everything works fine, it will run your test.py automatically and pass. Otherwise, it will raise errors and you should fix the bugs accordingly before moving to the next step.

And here is one more thing you might want to try to test if the architecture of your package is good to go. In the cmd/terminal, type the following code:

twine check dist/*

You should see something like this:

Checking distribution dist/TheNameofYourPackage-TheVersionofYourPackage-1.0.0-py3-none-any.whl: Passed
Checking distribution dist/TheNameofYourPackage-TheVersionofYourPackage.tar.gz: Passed

Step 7

Upload your package to TestPyPI:

twine upload --repository-url https://test.pypi.org/legacy/ dist/* #pay attention there is an extra space before dist.

Then you will see a link leading to the testing version of your package on TestPyPI. Check it out! If there are any typos or incompatible bugs, fix them before uploading your package to the real PyPI.

And, now, it is the most exciting moment, upload your package to PyPI to help hundreds of thousands of people in our community:

twine upload dist/*

By this point, your package should be officially online and can be "pip install" by anyone at any time from anywhere. Big moment! I still remember how I felt at the moment when I saw my first package is out there. I told myself, that's why I code! CONGRATULATIONS!!!

A few tips

  • Whenever you want to update your package, you should remove the 'build' and 'dist' folders, make changes to your code, edit the "CHANGLOG.txt" file, and revise the version number in the "setup.py". And repeat steps 5–7.
  • You may upgrade your package after the updates by doing this: pip install YOURPACKAGENAME --upgrade
  • You can always find your package on PyPi here: http://pypi.org/project/YOURPACKAGENAME/
  • Do not publish packages arbitrarily. Even though there are no hard restrictions on what you can or cannot publish, make sure you are uploading something that is actually meaningful and someone will benefit from your work.

CHANGELOG

Version 0.0.3 05/01/2023

  1. Upaded ...
  2. Fixed ...
  3. ...

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

testformyclasspks1-0.0.7.tar.gz (11.2 kB view details)

Uploaded Source

Built Distributions

testformyclasspks1-0.0.7-py3.9.egg (7.5 kB view details)

Uploaded Source

testformyclasspks1-0.0.7-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file testformyclasspks1-0.0.7.tar.gz.

File metadata

  • Download URL: testformyclasspks1-0.0.7.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for testformyclasspks1-0.0.7.tar.gz
Algorithm Hash digest
SHA256 7c82483490ae8c97f7519b34a0c565b5a758475b50e26f4327fb1f0ea6e25f5d
MD5 2888d05c9feabc24e4a4caa694531d41
BLAKE2b-256 2bce796f53752e8c94af69ca4ec29b09d16d119449af1b343ed6c9dc6ca6365e

See more details on using hashes here.

File details

Details for the file testformyclasspks1-0.0.7-py3.9.egg.

File metadata

File hashes

Hashes for testformyclasspks1-0.0.7-py3.9.egg
Algorithm Hash digest
SHA256 c551eeea7bc2f1777958f59f92f70d9d87c36885eac585e428f087a2a55d46ea
MD5 a33a0abe351b91718164ed62b4031fb3
BLAKE2b-256 4fa0c4d1c2522696363cab26da648d8a8ed535e53db5a1d5d0f9fd81dc4c8136

See more details on using hashes here.

File details

Details for the file testformyclasspks1-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for testformyclasspks1-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 54de707718dd3ce4731a10ac3aeb62f7054f84255ba77b5079af3de71b5343d4
MD5 92569c2ba8e60cb4a4c2f80bee0b39a3
BLAKE2b-256 e3c5329cb16686b9565eca782c47f9ccf046449a86a65a759410bfaff74f650d

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