A simple script to upload a PIP package
First Published: .
If you want to create a package and distribute it like through pip in record time, you can customize my script from cmemgzip for Ubuntu 20.04.
![](https://blog.carlesmateo.com/wp-content/uploads/2021/03/2021-03-21-16-13-14-carlesmateo-cmemgzip-pypi-pip-1.png)
Here is the official documentation if you want to do everything manually:
https://packaging.python.org/tutorials/packaging-projects
Here is the script customized for Test Environment.
You’ll need to create a Test account in test.pypi.org
#!/bin/bash
PACKAGE="cmemgzip-test"
mkdir $PACKAGE
mkdir $PACKAGE/src
mkdir $PACKAGE/src/$PACKAGE
mkdir $PACKAGE/tests
cp LICENSE $PACKAGE/
echo "[build-system]" > $PACKAGE/pyproject.toml
echo "requires = [" >> $PACKAGE/pyproject.toml
echo ' "setuptools>=42",' >> $PACKAGE/pyproject.toml
echo ' "wheel"' >> $PACKAGE/pyproject.toml
echo "]" >> $PACKAGE/pyproject.toml
echo 'build-backend = "setuptools.build_meta"' >> $PACKAGE/pyproject.toml
cat <<EOF > $PACKAGE/setup.cfg
[metadata]
name = cmemgzip
version = 0.4.1
author = Carles Mateo
author_email = cmemgzip@carlesmateo.com
description = Compresses files in memory and replaces the original by a .gz file when there is no space on drive.
long_description = file: README.md
long_description_content_type = text/markdown
url = https://gitlab.com/carles.mateo/cmemgzip
project_urls =
Bug Tracker = https://gitlab.com/carles.mateo/cmemgzip/issues
classifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
[options]
package_dir =
= src
packages = find:
python_requires = >=3.6
[options.packages.find]
where = src
EOF
cp README.md $PACKAGE/
cp manual-cmemgzip.pdf $PACKAGE/
cp cmemgzip.py $PACKAGE/src/$PACKAGE/
touch $PACKAGE/src/$PACKAGE/__init__.py
cp test_*.py $PACKAGE/tests/
python3 -m pip install --upgrade build
# Install dependencies
sudo apt-get install python3.8-venv
python3 -m pip install --user --upgrade twine
echo
echo "Entering into directory $PACKAGE"
cd $PACKAGE
echo
echo "Generating distribution binaries"
python3 -m build
# Create account in: https://test.pypi.org/manage/account/
# Create API Token
# https://test.pypi.org/manage/account/
echo
echo "Going to upload the packages. Use your username and password"
echo
python3 -m twine upload --repository testpypi dist/cmemgzip*
The changes for the script to production are just a different package name, and last line:
python3 -m twine upload --repository pypi dist/cmemgzip*
Obviously you’ll need to use credentials for Production.
Rules for writing a Comment