Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##################################################################
- How to Create and Publish a Simple Hello World Python Package to PyPI (helloworldfx)
- To install the package directly (pypi):
- pip install hellowordlfx
- ##################################################################
- Join our telegram channel for more : https://t.me/LinuxClassesEFXTv
- ##################################################################
- ## 1. Bash Script to Create the Project Structure
- helloworldfx/
- ├── helloworldfx/
- │ ├── __init__.py
- │ ├── __main__.py
- │ └── app.py
- ├── setup.py
- └── README.md
- ################################################################## BashFileStarts
- #!/bin/bash
- PROJECT_NAME="helloworldfx"
- mkdir -p $PROJECT_NAME/$PROJECT_NAME/templates
- cd $PROJECT_NAME || exit
- # Create __init__.py with version
- echo '__version__ = "0.1.0"' > $PROJECT_NAME/__init__.py
- # Create __main__.py to allow python -m helloworldfx
- cat << EOF > $PROJECT_NAME/__main__.py
- from .app import main
- if __name__ == "__main__":
- main()
- EOF
- # Create app.py with Hello World Flask app
- cat << EOF > $PROJECT_NAME/app.py
- #!/usr/bin/env python3
- from flask import Flask
- app = Flask(__name__)
- @app.route("/")
- def hello():
- return "Hello, World!"
- def main():
- app.run(debug=True)
- if __name__ == "__main__":
- main()
- EOF
- # Create setup.py
- cat << EOF > setup.py
- from setuptools import setup, find_packages
- setup(
- name="$PROJECT_NAME",
- version="0.1.0",
- packages=find_packages(),
- install_requires=["Flask"],
- entry_points={
- "console_scripts": [
- "$PROJECT_NAME = $PROJECT_NAME.app:main",
- ],
- },
- include_package_data=True,
- )
- EOF
- # Create README.md
- echo "# $PROJECT_NAME" > README.md
- # Create LICENSE (MIT license example)
- cat << EOF > LICENSE
- MIT License
- Copyright (c) $(date +%Y) Your Name
- Permission is hereby granted, free of charge, to any person obtaining a copy
- ...
- EOF
- ################################################################## BashFileEnds
- $ bash create_helloworldfx.sh
- ## 2. Create your PyPI API Token and .pypirc File
- Generate PyPI API Token:
- 1. Log into https://pypi.org/manage/account/token/
- 2. Create a new token scoped to your project (helloworldfx) or global access.
- 3. Copy the generated token string.
- Create .pypirc file in your home directory for secure authentication:
- nano ~/.pypirc
- [distutils]
- index-servers =
- pypi
- [pypi]
- username = __token__
- password = <YOUR_PYPI_TOKEN>
- chmod 600 ~/.pypirc
- 3. Build and Upload Your Package #
- Note: If you wish to push v2 you need to change the project version in setup.py. Example: present version is (version="0.1.0",) new update will have (version="0.1.1",).
- Make sure you are in your project root (where setup.py is):
- python3 -m pip install --upgrade build twine
- python3 -m build
- python3 -m twine upload dist/*
- # Update update version 0.1.1
- nano setup.py #change version
- rm -rf dist build linkgenfx.egg-info
- python3 -m pip install --upgrade build twine
- python3 -m build
- python3 -m twine upload dist/*
- 4. Test Your Package
- pip3 install helloworldfx
- helloworldfx
- #############################################################################
- PROJECT TYPE 2
- #############################################################################
- # Python Package Deployment Guide
- # 1. Update run.sh with your package name
- # Replace 'text2url' with the name of your app/package you want to push to PyPI
- # Example: sed -i 's#text2url#myapp#g' run.sh
- # Download run.sh https://github.com/efxtv/EFX-Tv-Bookmarks/tree/main/bin/pypi-python-pip-projects
- sed -i 's#text2url#appname#g' run.sh
- bash run.sh
- cd appname
- # Change in setup.cfg in project home
- # nano setup.cfg
- # name = text2url #change
- # version = 0.1.0 setup.cfg #change
- # nano ~/.pypirc
- :<< 'COMMENT'
- [pypi]
- username = __token__
- password = TOCKEN FROM https://pypi.org/manage/account/token/
- COMMENT
- # 2. Activate Python virtual environment easily
- # Add this function to your /etc/bash.bashrc or ~/.profile for persistent usage
- : <<'COMMENT'
- # Open the file using nano
- # nano /etc/bash.bashrc or nano ~/.profile
- # Add this function
- activatepy(){
- python3 -m venv myenv # Create a Python virtual environment named 'myenv'
- source myenv/bin/activate # Activate the virtual environment
- }
- COMMENT
- # After adding, reload the bash config or open a new terminal
- # source /etc/bash.bashrc
- # 3. Install necessary Python tools for packaging
- # 'build' is for building distributions, 'twine' is for uploading to PyPI
- pip install build twine
- # 4. Build your package
- # Creates source distribution and wheel files in the 'dist/' folder
- python3 -m build
- # 5. Install your package locally to test
- # Replace with your actual wheel file
- pip install dist/text2url-0.1.0-py3-none-any.whl
- # 6. Upload your package to PyPI
- # This pushes all files inside 'dist/' to https://pypi.org/
- twine upload dist/* --verbose
Advertisement
Add Comment
Please, Sign In to add comment