Ich versuche, ein einfaches Projekt in Python zu erstellen, aber ich kann nicht den Kopf darüber verdecken, wie es gemacht wird, obwohl ich die Dokumentationen immer und immer wieder lese und Beispielcode lese.Modul/Projektstruktur in Python
Ich bin halb neu zu Python, mit einem Hintergrund von nur Single-File-Scripting. Allerdings habe ich zahlreiche Node.js und Java-Projekte mit mehreren Ordnern und Paketen gemacht. In Python jedoch kann ich nicht die Projektstruktur und Workflow-Mechanismen zu erfassen-init .py, virtualenvs, setuptools etc. es scheint alles sehr fremd und nicht intuitiv für mich, verletzt meine Gesamtproduktivität (ironischerweise soll Python sein eine Sprache, auf die Produktivität ausgerichtet, rechts)
Mein Projekt dieses Beispiel Struktur hat:
package_test (package)
|
|------- __init__.py
|------- main.py (entry point)
|
|------- /lib (modules)
| |
| |----- __init__.py
| |----- lib.py
|
|------- /Tests
| |
| |----- __init__.py
| |----- test.py
in main.py:
from lib import lib
lib.libtest()
in lib.py:
def libtest():
print("libtest")
in test.py:
from lib import lib
lib.libtest()
Lauf main.py funktioniert, aber wenn test.py es ausgeführt wird, kann das Modul nicht finden. Ich habe versucht, Lösungen wie an sys.path anhängen, setzen ".." vor der lib, und mehr - keiner hat funktioniert.
Dies ist nur ein Beispiel, aber ich möchte in Zukunft komplexere Projekte in Python mit mehreren Unterordnern entwickeln (ich denke, Python hat einige coole Funktionen und nette Bibliotheken), aber dieses Problem beschäftigt mich weiter. Ich hatte nie über diese Dinge zu denken, wenn in Java oder in Knoten zu entwickeln, nicht Sachen wie virtualenv usw.
Vielen Dank im Voraus erwähnen
Nicht ein anwer Sie in Frage tatsächlich aber virtualenv und Setuptools sind völlig unabhängig von Ihrem Problem . Und glauben Sie mir, virtualenv __is__ ein sehr cooles Feature - eigentlich eine, auf die Sie nicht hoffen können, ohne zu leben, wenn Sie mehr als nur auf ein einzelnes Projekt warten müssen. –
Vielleicht möchten Sie auch lesen (zumindest die ersten beiden Antworten) https://stackoverflow.com/questions/11536764/how-to-fix-attempted-relative-import-in-non-package-even-with- init-py –