recently, I have tried to build a pypi server on top of github.
here are the steps:
- create a repo, to host those packages
- at the root level, define the setup.py with the findpackages(), like
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="pypi", version="0.0.1", author="lwpro2", author_email="lwpro2", description="A pypi for python packages", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/lwpro2", packages=setuptools.find_packages(), classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] )
3. at each packages, add the setup.py as well
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="package1", version="0.0.2", author="lwpro2", author_email="lwpro2", description="A fake library", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/lwpro2", packages=setuptools.find_packages(), classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] )
the folder structure will be like
--pypi
------setup.py
------README.md
------package1
-------------setup.py
-------------README.md
-------------__init__.py
-------------functions.py
------package2
-------------setup.py
-------------README.md
-------------__init__.py
-------------functions.py
4. run this command to generate the binaries
python3 setup.py sdist bdist_wheel
the folder will become
--pypi
------setup.py
------README.md
------package1
-------------setup.py
-------------README.md
-------------__init__.py
-------------functions.py-------------build/
dist/-------------
--------------------package1-0.0.1.tar.gz
------package2
-------------setup.py
-------------README.md
-------------__init__.py
-------------functions.py-------------build/
dist/-------------
--------------------package2-0.0.1.tar.gz
5. then create a static pypi server which comply to Pep 503, like


6. then add the new pypi server into Pipfile and pyproject.toml
Pipfile
[source] name = "privatepypi" url = "http://private/pypi" verify_ssl = false [dev-packages] [packages] package1 = {version = "*", index = "privatepypi"}
pyproject.toml
[[tool.poetry.source]] name = "privatepypi" url = "https://private/pypi" secondary = true [tool.poetry.dependencies] package2= "^0.0.1"
7. then can install packages using the commands as normal
pip install
poetry install
One thought on “Build a private pypi with github”