Her skal vi se på hvordan vi kan lage en enkel Python pakke som kan installeres lokalt via PIP.
Vi benytter oss her av setuptools som du kan lese mer om her.
Opprett en filstruktur som dette:
my-package/
bar/thebar.py
foo/thefoo.py
setup.py
setup.py
from setuptools import setup, find_packages
setup (
name='foobar',
author='John Doe',
author_email='Use the fax',
url='Not yet',
version='0.0.1',
description='Playing with python package',
packages=find_packages(include=['foo', 'bar'])
)
thebar.py
def whoami():
return 'I am bar'
thefoo.py
def whoami():
return 'I am foo'
Bygge pakken
Bygg pakken med kommandoen python setup.py sdist.
Resultatet vil se ut som noe slikt:
$ python setup.py sdist
running sdist
running egg_info
writing foobar.egg-info\PKG-INFO
writing dependency_links to foobar.egg-info\dependency_links.txt
writing top-level names to foobar.egg-info\top_level.txt
reading manifest file 'foobar.egg-info\SOURCES.txt'
writing manifest file 'foobar.egg-info\SOURCES.txt'
running check
creating foobar-0.0.1
creating foobar-0.0.1\foo
creating foobar-0.0.1\foobar.egg-info
copying files to foobar-0.0.1...
copying README.md -> foobar-0.0.1
copying setup.py -> foobar-0.0.1
copying foo\thefoo.py -> foobar-0.0.1\foo
copying foobar.egg-info\PKG-INFO -> foobar-0.0.1\foobar.egg-info
copying foobar.egg-info\SOURCES.txt -> foobar-0.0.1\foobar.egg-info
copying foobar.egg-info\dependency_links.txt -> foobar-0.0.1\foobar.egg-info
copying foobar.egg-info\top_level.txt -> foobar-0.0.1\foobar.egg-info
Writing foobar-0.0.1\setup.cfg
Creating tar archive
removing 'foobar-0.0.1' (and everything under it)
Dette vil nå bygge pakken og legge resultatet her: dist/foobar-0.0.1.tar.gz
Bruke pakken
Installere
Pakken kan enkelt installeres med pip install foobar-0.0.1.tar.gz
Deretter kan du f.eks. verifisere det med å bruke python interpreter direkte:
$ python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from foo import thefoo
>>> print(thefoo.whoami())
I am foo
Vise informasjon
Du kan nå se info om pakken som et hvilket som helst annen python pakke du har installert:
$ pip list
Package Version
---------- -------
foobar 0.0.1
$ pip show foobar
Name: foobar
Version: 0.0.1
Summary: Playing with python package
Home-page: Not yet
Author: John Doe
Author-email: Use the fax
License: UNKNOWN
Location: c:\bytes\foobar-python-package\venv\lib\site-packages
Requires:
Required-by:
Avinstallere
Pakken kan fjernes med pip uninstall foobar