So erstellen Sie ein Python-Paket mit VS Code

Motivation

Wenn Sie programmieren, möchten Sie das Programm möglicherweise wiederverwenden, oder Sie möchten, dass andere Mitglieder das Programm verwenden.

In einem solchen Fall ist es für andere einfacher, den Code für jede Funktion zu modularisieren und zu verpacken und die Dokumentation ordnungsgemäß zu verwalten.

VS Code ist auch ein leistungsstarkes Tool zum Erstellen von Python-Paketen. Daher werde ich erklären, wie ein Python-Paket mit VS-Code erstellt wird.

Es enthält auch nützliche Informationen beim Packen Ihres Datenanalyseprogramms.

Umgebung

Bemerkungen
OS Windows10
conda 4.8.3 Mit Anaconda Promptconda -V
Anaconda 2020.02 Mit Anaconda Promptconda list anaconda
Python 3.8.2
VSCode 1.43.2

Umgebung einrichten

In diesem Artikel erfahren Sie, wie Sie die Python-Ausführungsumgebung für VS-Code vorbereiten. Erstellen einer Python- und Jupyter-Ausführungsumgebung mit VSCode

Verzeichnisaufbau

Wenn Sie eine Ausführungsumgebung mit VSCode haben, erstellen Sie dort Ordner und Dateien für die Entwicklung von Python-Paketen.

.
├── Lieblingspaketname
│   ├── __init__.py
│ └ Lieblingsdateiname.py
├── setup.py
└── script.py

Das Paket selbst befindet sich im Ordner "Lieblingspaketname".

01VSCodeDirectory.png

Als Beispiel habe ich es wie oben gezeigt auf VSCode gemacht. Nennen wir als Beispiel das Paket "mypackage".

Schreiben Sie setup.py

setup.py ist eine Datei, die die Abhängigkeitsinformationen, Versionsinformationen und den Paketnamen des zu erstellenden Pakets festlegt.

setup.py

from setuptools import setup, find_packages

setup(
    name='mypackage',
    install_requires=['pandas','scikit-learn'],
    packages=find_packages()
)

Schreiben Sie die Einstellungen in das Argument der Funktion setup. Schreiben Sie beispielsweise in install_requires die für das Paket erforderlichen Module.

Es gibt verschiedene andere Elemente. Überprüfen Sie daher Offizielle Dokumentation (Setup-Skript schreiben).

Schreiben Sie ein Programm

Lassen Sie uns das Programm sofort schreiben. Als Beispiel werde ich dieses Mal ein Paket erstellen, um die Daten von Kaggles Titanic zu analysieren.

Angenommen, Sie schreiben das folgende Programm in die Datei "preprocessing.py" im Paket. Dies ist ein Programm, das Daten vorverarbeitet.

preprocessing.py

class Preprocesser:
"""
Klasse zum Vorverarbeiten
"""
    def process(self,data):
        """
Methode zur Vorverarbeitung
        """
        processed_data=data.copy()

        #Alter fehlt Wert zum Median
        age_m=processed_data['Age'].median()
        processed_data['Age']=processed_data['Age'].fillna(age_m)

        #-----Kürzung-----
        #Vorverarbeitung schreiben

        return processed_data

Führen Sie das Programm aus

Lassen Sie uns das Programm ausführen. Erstellen Sie ein .py-Skript für die Programmausführung mit dem Namen "script.py" direkt unter dem Paketordner "mypackage". Schreiben Sie beispielsweise ein Programm, das Trainingsdaten vorverarbeitet und anzeigt.

script.py

def main():
    from mypackage import preprocessing
    import pandas as pd

    train=pd.read_csv('train.csv')

    #Initialisieren Sie die Vorverarbeitungsinstanz und führen Sie die Vorverarbeitung durch
    preprocesser=preprocessing.Preprocesser()
    train_processed=preprocesser.process(train)

    print(train_processed.head())

if __name__=='__main__':
    main()

In Bezug auf das Importieren Ihres eigenen Pakets, wenn es sich direkt unter dem Ordner Ihres eigenen Pakets befindet,

from mypackage import preprocessing

mögen

aus selbst erstellter Paketname importieren Dateiname des einzelnen Python-Codes

Sie können das Paket mit importieren.

02Run.png

Drücken Sie bei geöffnetem script.py die Taste F5 auf VSCode, um das Programm wie oben gezeigt auszuführen, und das Ausführungsergebnis wird auf Terminal angezeigt.

Debuggen Sie das Paket

[Erstellen einer Python- und Jupyter-Ausführungsumgebung mit VS-Code # Verwendung des Debuggens](https://qiita.com/SolKul/items/f078877acd23bb1ea5b5#%E3%83%87%E3%83%90%E3%83%83] % E3% 82% B0% E3% 81% AE% E6% B4% BB% E7% 94% A8) Sie können die VS-Code-Debug-Funktion auch in der Paketprogrammierung verwenden.

07DebugPackage.png

Drücken Sie beispielsweise die Taste "F9" in der 7. Zeile des Codes "preprocessing.py" im Paket, wie oben gezeigt. Am linken Ende dieser Zeile sehen Sie einen roten Punkt. Dies wird als ** Haltepunkt ** bezeichnet. Kehren Sie dann in diesem Zustand zu script.py zurück und drücken Sie die Taste F5, um es auszuführen.

08BreakRun.png

Wie in der obigen Abbildung gezeigt, wird die Ausführung in Zeile 7 des Pakets angehalten, und die zu diesem Zeitpunkt deklarierten Variablen (hier die Variablen in preprocessing.py) werden in der linken Seitenleiste angezeigt. Durch die Verwendung von Haltepunkten auf diese Weise denke ich, dass die Fehlerbehebung (= ** Debugging **) des Programms fortschreiten wird.

Installieren Sie das Paket

Versuchen Sie, dieses selbst erstellte Paket in einer anderen Umgebung zu installieren. Und ich werde versuchen zu sehen, ob es in dieser anderen Umgebung funktioniert.

Öffnen Sie die Anaconda-Eingabeaufforderung und erstellen Sie eine neue Umgebung.

conda create -n Name der bevorzugten Umgebung Python=Python-Version

03CreateEnv.png

Dieses Mal habe ich als Beispiel eine Umgebung namens "setup_test" erstellt.

Starten Sie dann diese Umgebung.

conda activate setup_test

Wechseln Sie dann in den Ordner, in dem sich die oben bearbeitete Datei "setup.py" befindet.

cd setup.Verzeichnis mit py

Dann installieren Sie dieses Homebrew-Paket.

python setup.py install

Versuchen Sie nach der Installation, die obige script.py in diesem Zustand auszuführen. Kopieren Sie script.py und train.csv in einen anderen Ordner Ihrer Wahl und versuchen Sie, sie dort auszuführen.

05OnlyScript.png

python script.py

06RunIndependent.png

Es kann wie in der obigen Abbildung gezeigt ausgeführt werden und die vorverarbeiteten Trainingsdaten werden angezeigt. Dieser Ordner enthält nur Skripte und Daten, keinen selbst erstellten Paketordner. Mit anderen Worten, wenn Sie es mit "script.py" in diesem Ordner ausführen könnten, bedeutet dies, dass Sie dieses selbst erstellte Paket in dieser Umgebung installieren könnten.

Bereiten Sie Demodaten in Ihrem eigenen Paket vor

Wenn Sie Ihr eigenes Paket erstellen, möchten Sie möglicherweise andere Datendateien als den Quellcode einschließen.

Angenommen, Sie erstellen und verteilen ein Paket für die Datenanalyse. Und wenn andere Mitglieder das Paket verwenden möchten, muss meines Erachtens das Verhalten der Analyse bekannt sein, obwohl die Daten nicht sofort aufbereitet werden können. Wenn Sie in einem solchen Fall die Demodaten im Paket vorbereiten, können Sie sie dieser Person reibungslos erklären.

Als Beispiel erklären wir den Fall, in dem die Trainingsdaten für die Titanic im Paket vorbereitet sind. Fügen Sie dem Verzeichnis einige Ordner und Dateien hinzu.

.
├── mymodule
│   ├── __init__.py
│   ├── preprocessing.py
│   ├── load_date.py *
│   └── resources *
│        └── train.csv *
├── setup.py
└── script.py

*:Neu hinzugefügte Dateien und Ordner

Erstellen Sie zunächst einen Ordner für Daten in Ihrem eigenen Paket. Hier sind es "Ressourcen". Und geben Sie die Trainingsdaten (train.csv) ein.

Lesen Sie die Daten im Paket

Schreiben Sie den folgenden Code, um die Demo-Daten zu laden und zum Paket hinzuzufügen.

load_date.py

import pkgutil,io
import pandas as pd

class DataLoader:
    def load_demo(self):
        train_b=pkgutil.get_data('mypackage','resources/train.csv')
        train_f=io.BytesIO(train_b)
        train=pd.read_csv(train_f)
        return train

Hier verwenden wir ein Modul namens "pkgutil", das standardmäßig in Python enthalten ist. Die Funktion pkgutil.get_data () kann ihren Inhalt binär erhalten, indem sie den Paketnamen und den Dateinamen angibt.

Außerdem wird "io" verwendet, um die gelesenen Binärdaten wie eine Datei ("dateiähnliches Objekt") zu behandeln.

Testen Sie, ob die Demo-Daten gelesen werden können. Schreiben Sie main () von script.py wie folgt um und führen Sie es mit F5 auf VSCode aus.

script.py

def main():
    from mypackage import load_data

    data_loader=load_data.DataLoader()
    train=data_loader.load_demo()
    print(train.head())

09LoadTest.png

Die Demo-Daten können wie oben gezeigt gelesen werden.

Stellen Sie sicher, dass die Daten gleichzeitig mit der Paketinstallation installiert werden

Selbst wenn dieses Paket installiert ist, werden die Daten jedoch nicht gleichzeitig installiert. Fügen Sie eine Zeile zu "setup.py" hinzu, damit bei der Installation des Pakets die Daten gleichzeitig installiert werden.

setup.py

from setuptools import setup, find_packages

setup(
    name='mypackage',
    install_requires=['pandas','scikit-learn'],
    packages=find_packages(),
    package_data={'mypackage': ['resources/*']}
)

Durch Angabe des Paketnamens und des Ordnernamens in "package_data" können Sie die zu installierenden Daten gleichzeitig mit der Paketinstallation angeben.

Weitere Informationen finden Sie unter Offizielles Dokument (2.6. Paketdaten installieren).

Wenn Sie dann, wie oben erläutert, eine neue Umgebung erstellen und Ihr eigenes Paket mit setup.py installieren, können Sie bestätigen, dass die Demo-Daten in der installierten Umgebung verwendet werden können. ..

abschließend

Dies reicht nicht aus, um Ihr Programm anderen Mitgliedern leicht zu erklären und zu verwenden. Ursprünglich könnten Sie einen Test mit "unittest" oder "pytest" oder "schreiben" Es gibt noch andere Dinge zu tun, z. B. das Erklären der Programm-E / A in docstring`.

Ich denke jedoch, dass die Verpackung der erste Schritt dazu ist.

Wenn Sie so weit gekommen sind, machen Sie Ihr Programm leicht verständlich, indem Sie Tests schreiben, "docstring" schreiben und "docstring" in die Spezifikationen des folgenden Programms konvertieren.

10Sphinx.png

zusätzliche Information

Dieser Artikel war sehr hilfreich beim Packen von Python-Code. Es wird auch beschrieben, wie Sie einen Test mit "unittest" schreiben. Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)

Beim Testen ist "pytest" jedoch einfacher zu verwenden. Wenn Sie es gewohnt sind, "unittest" zu verwenden, versuchen Sie es bitte mit "pytest". pytest (offizielles Dokument)

Es geht auch um Dokumentation, die Ihr Programm beschreibt. Sie können "docstring" als Spezifikation dokumentieren. Wie man Sphinx benutzt. Dokumentstring lesen und Spezifikationen generieren

Möglicherweise möchten Sie auch Diagramme und Formeln verwenden, um die Verwendung des Programms und der Theorie zu erläutern.

In einem solchen Fall wird empfohlen, ein Modul namens "mkdocs" zu verwenden, mit dem Dokumente im Markdown-Format erstellt werden können. Dokumenterstellung mit MkDocs

Wie verwenden Sie dieses Programm von Mitgliedern, wenn Sie ein Dokument mit dieser sphinx und mkdocs erstellen und es auf AWS S3 usw. hosten? Wenn Sie gefragt werden, ist dies sehr praktisch, da Sie die URL senden können, wenn Sie beschäftigt sind.

Ich habe hier auf die Datenanalyse der Titanic verwiesen. [Einführung in Kaggle-Anfänger] Wer wird die Titanic überleben?

Recommended Posts

So erstellen Sie ein Python-Paket mit VS Code
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
[Python] Wie man eine Klasse iterierbar macht
So codieren Sie eine Drohne mithilfe der Bilderkennung
So richten Sie eine Python-Umgebung mit pyenv ein
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So installieren Sie Python mit Anaconda
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie man einen lockeren Bot macht
So erstellen Sie ein Conda-Paket
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So verschieben Sie ein zweidimensionales Array nur mit Python [Hinweis]
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Verwendung von pip, einem Paketverwaltungssystem, das für die Verwendung von Python unverzichtbar ist
So verpacken und verteilen Sie Python-Skripte
Qiita (1) Wie schreibe ich einen Codenamen?
So fügen Sie ein Paket mit PyCharm hinzu
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
So zeichnen Sie ein Diagramm mit Matplotlib
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
[Python] So invertieren Sie eine Zeichenfolge
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Wie bekomme ich Stacktrace in Python?
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
So aktualisieren Sie eine in Tableau gepackte Arbeitsmappen-Datenquelle mit Python
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
[Python] Wie erstelle ich eine Matrix aus sich wiederholenden Mustern (repmat / tile)
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
So führen Sie Maya Python-Skripte aus
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
So installieren Sie das Python-Paket in einer lokalen Umgebung als allgemeiner Benutzer
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Wie man ein Dialogsystem für Anfänger erstellt
Lesen einer CSV-Datei mit Python 2/3
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Virtuelle Python / Windows (Windows 10) -Umgebung / Paket mit VSCode
Debuggen mit VS-Code mit Boost Python Numpy
So generieren Sie ein Python-Objekt aus JSON
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
So fügen Sie einen Suchpfad für Python-Module hinzu