Build a private pypi with github

recently, I have tried to build a pypi server on top of github.

here are the steps:

  1. create a repo, to host those packages
  2. 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s