Python Devolopement

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BLVCK
User
Beiträge: 4
Registriert: Samstag 22. Juli 2017, 15:31

Hallo miteinander :D

ich beschäftige mich seit etwa einem Jahr oberflächlich mit Python und habe mittlerweile - so meine ich zumindest - ein solide Grundlage für die Programmierung mit Python.

Ich habe allerdings einige Fragen, auf die ich im Netz (Tutorial und E-Books) keine klaren Antworten finden kommte, deshalb versuche ich es mal hier :) :

• Wie erstellt man selber Module und greift auf diese mit der "import" Funktion zu (ggf. Beispiel-Modul) ?

• Wie lizenziert man seine eigenen Scripte?

• Wie lassen sich Module installieren und muss man bei unterschiedlichen Betriebssystem ein anderes Installationsverfahren wählen?

• Wie publiziert man seine Scripte am Besten (alternativen zu Github)?

• Ist das publizieren eines Scripts über Github sinnvoll?
Wenn ja, was muss man im Vorfeld über Git wissen?

Das dürften glaub die wichtigsten Fragen sein die mir im Laufe der Zeit eingefallen sind.

Danke bereist im voraus für die hilfreichen Antworten :wink:
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

BLVCK hat geschrieben:• Wie lizenziert man seine eigenen Scripte?
Betreffend dem Lizenzieren hatte ich hier mal einen längeren Thread gefunden, in dem einiges angesprochen wurde, wenngleich nicht alles. Ich denke, es war dieser hier, bin mir aber nicht sicher:

viewtopic.php?t=34113

Richtig ist, dass Du alles beachten musst, was bereits an Lizenzen vorhanden ist, da Du praktisch auf Klassen, Methoden und Module zugreifst, die bereits vorhanden sind und was da letztendlich nur als abgeleitetes (derived) Werk gilt und was nicht, könnte Dir ein Anwalt besser erklären. Richtig ist aber auch, dass der von Dir geschriebene Code ab einem gewissen Umfang möglicherweise eine schützenswerte Schöpfungshöhe erreicht und Du an diesem die Urheberrechte hältst. Also, Du könntest minimal das Design einer Fenster-Anwendung unter einer Lizenz Deiner Wahl stellen, würde ich meinen, doch ob eine Mit-Lizenz für den Rest genügt, da wäre ich mir nicht so sicher, eher vielleicht GPL v3, könnte ich mir vorstellen.

Mit Github hatte ich schon einmal überlegt, nur dachte ich da noch, dass man seine Scripts einfach hochladen könnte und nicht, dass man sich dazu noch etwas auf dem eigenen Rechner installieren muss, so wie ich das bisher verstand.
BlackJack

@BLVCK: Über Module und Packages hat das Tutorial in der Python-Dokumentation ein eigenes Kapitel.

Lizenzen liegen üblicherweise als Text mit bei den Quelldateien. Manche finden es auch wichtig die Lizenz zumindest kurz im Kopf jeder Quelltextdatei in einem Kommentar zu erwähnen und gegebenfalls auf die Lizenztextdatei zu verweisen. Welche Lizenz man wählt ist einem selbst überlassen solange man nur eigenen Code und den aus der Standardbibliothek verwendet. Zusätzliche Module können Lizenzen besitzen welche die Wahl der Lizenz für den eigenen Code einschränken. Das kommt dann auf die jeweilige Lizenz(en) an.

Module und Packages sind üblicherweise beim „Python Package Index“ (http://pypi.python.org/) registriert und lassen sich mittels ``pip`` von dort installieren. Man kann auch einen eigenen Index aufsetzen oder mit ``pip`` aus anderen Quellen installieren. Es lohnt sich auch sich mit dem Thema virtuelle Umgebungen in Python zu beschäftigen.

Wie Du Programme publizierst kommt stark darauf an was die genau machen, wie viel Arbeit Du Dir für unterschiedliche Plattformen machen möchtest, was die Benutzer erwarten oder womit sie klar kommen, …

Bibliotheken würde ich beim Python Package Index registrieren/hochladen.

Alternativen zu Github wären beispielsweise Bitbucket (Git oder Mercurial) oder Sourceforge. Wobei letzteres eher nicht mehr für neue Projekte verwendet wird und keinen guten Ruf mehr hat seit dem die versuchen mit fragwürdigen Mitteln Geld zu verdienen. Dann gäbe es noch GitLab, sowohl als Service als auch zum selber aufsetzen.

Ob das publizieren auf Github sinnvoll ist, keine Ahnung, aber Github & Co sind ja mehr als nur publizieren. Eine (verteilte) Versionsverwaltung und einen Issuetracker finde ich schon ganz sinnvoll für OpenSource-Projekte.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Melewo: wer soll das, was Du da zu Lizenzen schreibst verstehen?

@BLVCK: jede Pythondatei ist ein Modul. Da muß man nichts explizit machen. Benutzbare Module sind seiteneffektfrei, das heißt, außer Definitionen passiert nichts, wenn man sie importiert.

Scripte lizenziert man, indem man ihnen eine Lizenz gibt, also einen Text, dem der Nutzer im juristischen Sinne zustimmen und sich daran halten muß, wenn er das Skript benutzen will. Wie die Lizenz aussieht, hängt davon ab, was Du damit erreichen willst. So lange Du der Besitzer des Codes bist, bist Du frei in der Form wie Du die Lizenz formulierst, hast Du Code von anderen eingebunden, mußt Du sie um deren Erlaubnis zur Veröffentlichung und zu den Nutzungsrechten fragen. Das passiert oft in Form einer Lizenz, an die Du Dich dabei halten mußt. Lizenzen bestehen meist aus drei Teilen, dem Haftungsausschluß, den Regeln zur Nutzung und Verbreitung und den Regeln zur Veränderung und der Veröffentlichung von daraus abgeleiteten Werken. Der Haftungsausschluß ist meist immer gleich, bei den Regeln zur Nutzung und Verbreitung unterscheiden sich sogenannte Closed-Source von Open-Source Lizenzen; während erstere die Nutzung nur gegen Entgelt erlauben und die Verbreitung meist ausschließen, ist bei zweiteren die Nutzung meist entgeltfrei und die Verbreitung erwünscht. Wenn Du Dich für Open-Source-Lizenzen interessierst, liest Du sie Dir am besten durch und suchst Dir eine aus, die passend ist.

Pythonpakete werden üblicherweise auf dem Python Package Index veröffentlicht. Wie das geht, steht dort. Github ist ein öffentlicher Versionskontrollsystem-Hoster, der auch zum herunterladen von fertigen Paketen benutzt werden kann, in erster Linie aber zum Entwickeln gedacht ist.

Pakete haben meist eine Datei setup.py und nutzen setuptools, das sich um die Installation kümmert. Am besten schaust Du Dir bekannte Pakete an, wie die das lösen.
BLVCK
User
Beiträge: 4
Registriert: Samstag 22. Juli 2017, 15:31

Heißt das, dass es Probleme bei der Lizenzierung geben könnte, wenn ich Module wie "nmap" oder "bs4" verwenden möchte und mein Script quasi als geistiges Eigentum kennzeichnen will?

Generell bin ich interessiert daran Python für Forensik- und Netzwerktools zu nutzen. Eigentlich wollte ich besagte Tools anfangs umsonst für die Öffentlichkeit zugänglich machen. Die arbeitsintensiveren Scripte würde ich am liebsten für private Zwecke umsonst publizieren und für gewerbliche Zwecke verkaufen, ähnlich wie TeamViewer (allerdings erst wenn ich ein gestandener Python-Programmierer bin :x).

Was Git angeht, habe ich immer noch nicht ganz verstanden was es damit auf sich hat. Ist es eine Programmiersprache zur Versionskontrolle? Sorry,
aber dafür fehlt mir irgendwie das Verständnis :roll:
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

BLVCK hat geschrieben:Heißt das, dass es Probleme bei der Lizenzierung geben könnte, wenn ich Module wie "nmap" oder "bs4" verwenden möchte und mein Script quasi als geistiges Eigentum kennzeichnen will?
Heiß es nicht bei "bs4", so wie ich das sehe:

License: MIT
https://pypi.python.org/pypi/beautifulsoup4

Du musst nur schauen und so einfach ist es ab und an nicht. Ist jetzt ein ganz anderer Bereich, hat nichts mit Python zu tun, doch einfach mal lesen, wie da die Meinungen auseinandergehen:

https://talkpress.de/artikel/verletzt-w ... ess-lizenz
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Klar kann es Lizenzprobleme geben. Du musst die entsprechenden Lizenzen kennen, und entsprechend handeln. ZB veröffentlichen welche Software du genutzt & die Lizenz ebenfalls reproduzieren. Ggf. musst du um Lizenzen herumarbeiten, zB indem du eine Kommandozeilen-Anwendung schreibst die du dann wieder selbst benutzt. Oder Geld bezahlen.

Und GIT ist keine Progranmiersprache. Es ist eine Versionskontrollsoftware. Du schreibst Code, und mittels GIT speicherst du einen konkreten stand aller Dateien ab, und kannst den jederzeit wieder hervorholen. Und du kannst es dann auch noch auf einen entfernten Server publizieren. Für einen alleine ist das hauptsächlich ein Sicherheitsnetz, geleistete Arbeit nicht zu verlieren, und definierte Versionen (releases) wieder herstellen zu können. ZB um bugs zu fixen.
BLVCK
User
Beiträge: 4
Registriert: Samstag 22. Juli 2017, 15:31

@_deets_: Ok jetzt habe ich es verstanden. Danke:)

Ok Schein als ob das Lizenzieren eine komplzierte Angelegenheit wäre. Aber zumindest weiß ich jetzt schon mal wo ich anstrengend muss.

Wie handhabt man es denn, wenn man Module verwendet, die jeweils nur unter Python2 oder Python3 verfügbar sind?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

indem du entweder portierst, oder halt zwei Interpreter benutzt und Interprozesskommunikation benutzt.
Antworten