" { name = \"Mein Name\", email = \"Mein_Name@example.com\" }\n",
" { name = \"Frederik Arnold\", email = \"frederik.arnold@hu-berlin.de\" }\n",
"]\n",
"description = \"Eine kurze Beschreibung für Mein Projekt\"\n",
"description = \"Eine kurze Beschreibung für PyPiex\"\n",
"readme = \"README.md\"\n",
"requires-python = \">=3.7\"\n",
"\n",
...
...
@@ -215,7 +186,7 @@
},
{
"cell_type": "markdown",
"id": "646e592e",
"id": "927e9459",
"metadata": {},
"source": [
"### README.md\n",
...
...
@@ -229,10 +200,10 @@
},
{
"cell_type": "markdown",
"id": "de1fcd4f",
"id": "4c8acd0d",
"metadata": {},
"source": [
"## LICENSE\n",
"### LICENSE\n",
"\n",
"```\n",
"Apache License\n",
...
...
@@ -264,34 +235,159 @@
},
{
"cell_type": "markdown",
"id": "86650a5a",
"id": "d4b197a7",
"metadata": {},
"source": [
"### Package für den Upload erzeugen\n",
"\n",
"- Für die Erzeugung der zum Upload benötigten Dateien, muss zuerst in den Projektordner navigiert werden, und dort die folgende Befehle ausgeführt werden:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0251a377",
"metadata": {},
"outputs": [],
"source": [
"!pip install --upgrade build"
]
},
{
"cell_type": "markdown",
"id": "68e05d16",
"metadata": {},
"source": [
"- Jetzt sollten alle benötigten Pakete installiert sein."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "92583304",
"metadata": {},
"outputs": [],
"source": [
"!python -m build"
]
},
{
"cell_type": "markdown",
"id": "3cf7b4cd",
"metadata": {},
"source": [
"- Dieser Befehl erstellt anhand der `pyproject.toml` alle benötigten Dateien und legt diese in den Ordner `dist` im Projektordner."
]
},
{
"cell_type": "markdown",
"id": "afd1c91e",
"metadata": {},
"source": [
"- Wenn die Befehle korrekt ausgeführt werden konnten, dann sollte die letzte Zeile so lauten:\n",
"\n",
"```\n",
"python3 -m pip install --upgrade build\n",
"python3 -m build\n",
"```"
"Successfully built Pypiex-0.0.1.tar.gz and Pypiex-0.0.1-py3-none-any.whl\n",
"```\n",
"\n",
"- Außerdem sollten zwei Dateien im Ordner `dist` erzeugt worden sein.\n",
"- Die Datei mit der Endung `.whl` ist eine Wheel-Datei.\n",
"- Um Pakete hochladen zu können muss zuerst ein Account erstellt werden. Der PyPI Testserver ist unabhängig von der Produktionsumgebung und es werden jeweils eigene Accounts benötigt."
]
},
{
"cell_type": "markdown",
"id": "1444d33a",
"metadata": {},
"source": [
"- Jetzt muss ein `API token` generiert werden. Dies kann man unter folgendem Link: https://test.pypi.org/manage/account/#api-tokens. In den Kontoeinstellungen im Bereich `API-Token`. Der Geltungsbereich kann auf `Gesamtes Konto` gestellt werden. Das erstellte Token muss direkt gesichert werden, da es danach nicht mehr einsehbar ist."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2a24a2c",
"metadata": {},
"outputs": [],
"source": [
"!pip install --upgrade twine"
]
},
{
"cell_type": "markdown",
"id": "abf06326",
"metadata": {},
"source": [
"- Diese Zeile lädt und installiert die benötigten Packages."
"- Diese Zeile führt den Upload aus. Hierbei wird nach dem Username und Passwort gefragt. Für den Username muss `__token__` verwendet werden und für Passwort das gerade erstelle Token inklusive des `pypi` Prefix.\n",
"\n",
"<div class=\"alert alert-info\">\n",
"<b>Hinweis</b> Soll eine neue Version für ein Paket hochgeladen werden, dann muss vor der Erzeugung des Pakets immer zuerst die Versionsnummer in der `pyproject.toml` angepasst werden. Eine Version kann immer nur ein Mal hochgeladen werden. \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "a55a2eb7",
"metadata": {},
"source": [
"## Package installieren und verwenden\n",
"\n",
"- Das Paket kann jetzt mit `pip` installiert werden. Hierzu muss der Testserver angegeben werden."
Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
%% Cell type:markdown id:30526362 tags:
%% Cell type:markdown id:c7dc7204 tags:
## Was ist ein Modul?
- Ein Modul ist eine Datei, die Python-Definitionen und -Anweisungen beinhaltet. Oder anders gesagt: Jede Python-Datei ist ein Modul und der Name des Moduls ist der Dateiname ohne die Endung `.py`
- Ein Package ist eine Sammlung von Modulen. Hierfür liegen mehrere Module in einem Ordner, welcher auch eine Datei `__init__.py` enthalten muss. Dies unterscheidet ein Package von einem Ordner, der zufällig mehrere Module enthält.
%% Cell type:markdown id:edfaa8dd tags:
%% Cell type:markdown id:21e7cd83 tags:
## Module verwenden
- Python wird mit einer Bibliothek von Standardmodulen ausgeliefert. Ein solches Modul kann mit dem Befehl `import` importiert und anschließend verwendet weden.
%% Cell type:code id:0741b008 tags:
%% Cell type:code id:94cad5e7 tags:
```
import json
```
%% Cell type:markdown id:af33edfc tags:
%% Cell type:markdown id:1129c831 tags:
- Wenn wir nun versuchen ein Modul zu installieren, welches nicht in den Standardmodulen enthalten ist, dann kommt es zu einer Fehlermeldung.
- Module, die nicht in der Bibliothek von Standardmodulen enthalten sind, müssen vor dem Import installiert werden. Hierfür wird ein Paketverwaltungsprogramm verwendet. Dies ist im Normfall `pip`. Mit dem Befehl `pip install` können Pakete installiert werden.
-`pip`lädt Pakete aus dem Python Package Index (PyPI).
- PyPI ist ein Sofware-Vezeichnis der Programmiersprache Python.
- PyPI umfasst knapp 420.00 Projekte (Stand: Dezember 2022)
- Jede:r kann sich auf PyPI (https://pypi.org) registrieren und ein Projekt erstellen.
<divclass="alert alert-info">
<b>Hinweis</b> Der Begriff "Package" kann etwas verwirrend sein. PyPI spricht auch von Packages. Ein PyPI-Package kann ein einzelnes Python-Modul sein oder aber auch mehrere Python-Packages umfassen.
</div>
%% Cell type:markdown id:e9e054ee tags:
%% Cell type:markdown id:d45b9900 tags:
### PyPI Testumgebung
- Für Testzwecke gibt es die PyPI Testumgebgung (https://test.pypi.org)
- Diese funktioniert genau wie die reale Version und sollte verwendet werden um die eigene Konfiguration zu testen.
%% Cell type:markdown id:7c602480 tags:
%% Cell type:markdown id:cbf98fba tags:
## Mein erstes PyPI (Test)-Package
%% Cell type:markdown id:bd3673fd tags:
%% Cell type:markdown id:0cbf8602 tags:
### Struktur
- TODO: Add screenshot
```
pypi-example/
├── LICENSE
├── pyproject.toml
├── README.md
└── pypiex/
├── __init__.py
└── example.py
```
%% Cell type:markdown id:e4db9691 tags:
%% Cell type:markdown id:8b3f6ddf tags:
### pyproject.toml
```toml
[build-system]
requires=["setuptools>=61.0"]
build-backend="setuptools.build_meta"
[project]
name = "Mein_Projekt"
name="Pypiex"
version="0.0.1"
authors=[
{ name = "Mein Name", email = "Mein_Name@example.com" }
description = "Eine kurze Beschreibung für Mein Projekt"
description="Eine kurze Beschreibung für PyPiex"
readme="README.md"
requires-python=">=3.7"
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
[project.urls]
"Homepage"="https://..."
"Bug Tracker"="https://..."
```
%% Cell type:markdown id:646e592e tags:
%% Cell type:markdown id:927e9459 tags:
### README.md
```
# Mein Projekt
Dies ist ein Beispielprojekt.
```
%% Cell type:markdown id:de1fcd4f tags:
%% Cell type:markdown id:4c8acd0d tags:
## LICENSE
### LICENSE
```
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
[...]
```
%% Cell type:markdown id:86650a5a tags:
%% Cell type:markdown id:d4b197a7 tags:
### Package für den Upload erzeugen
- Für die Erzeugung der zum Upload benötigten Dateien, muss zuerst in den Projektordner navigiert werden, und dort die folgende Befehle ausgeführt werden:
%% Cell type:code id:0251a377 tags:
```
!pip install --upgrade build
```
python3 -m pip install --upgrade build
python3 -m build
%% Cell type:markdown id:68e05d16 tags:
- Jetzt sollten alle benötigten Pakete installiert sein.
%% Cell type:code id:92583304 tags:
```
!python -m build
```
%% Cell type:markdown id:300f78f8 tags:
%% Cell type:markdown id:3cf7b4cd tags:
- Dieser Befehl erstellt anhand der `pyproject.toml` alle benötigten Dateien und legt diese in den Ordner `dist` im Projektordner.
%% Cell type:markdown id:afd1c91e tags:
- Wenn die Befehle korrekt ausgeführt werden konnten, dann sollte die letzte Zeile so lauten:
```
Successfully built Pypiex-0.0.1.tar.gz and Pypiex-0.0.1-py3-none-any.whl
```
- Außerdem sollten zwei Dateien im Ordner `dist` erzeugt worden sein.
- Die Datei mit der Endung `.whl` ist eine Wheel-Datei.
- Die Datei mit der Endung `.tar.gz` TODO
%% Cell type:markdown id:a87cd03e tags:
### Package auf Testserver hochladen
- Um Pakete hochladen zu können muss zuerst ein Account erstellt werden. Der PyPI Testserver ist unabhängig von der Produktionsumgebung und es werden jeweils eigene Accounts benötigt.
%% Cell type:markdown id:1444d33a tags:
- Jetzt muss ein `API token` generiert werden. Dies kann man unter folgendem Link: https://test.pypi.org/manage/account/#api-tokens. In den Kontoeinstellungen im Bereich `API-Token`. Der Geltungsbereich kann auf `Gesamtes Konto` gestellt werden. Das erstellte Token muss direkt gesichert werden, da es danach nicht mehr einsehbar ist.
%% Cell type:code id:e2a24a2c tags:
```
!pip install --upgrade twine
```
%% Cell type:markdown id:abf06326 tags:
- Diese Zeile lädt und installiert die benötigten Packages.
- Diese Zeile führt den Upload aus. Hierbei wird nach dem Username und Passwort gefragt. Für den Username muss `__token__` verwendet werden und für Passwort das gerade erstelle Token inklusive des `pypi` Prefix.
<divclass="alert alert-info">
<b>Hinweis</b> Soll eine neue Version für ein Paket hochgeladen werden, dann muss vor der Erzeugung des Pakets immer zuerst die Versionsnummer in der `pyproject.toml` angepasst werden. Eine Version kann immer nur ein Mal hochgeladen werden.
</div>
%% Cell type:markdown id:a55a2eb7 tags:
## Package installieren und verwenden
- Das Paket kann jetzt mit `pip` installiert werden. Hierzu muss der Testserver angegeben werden.