__blackjack__ hat geschrieben: ↑Samstag 21. Dezember 2024, 16:02
@mechanicalStore: Lass dieses „ohne Installation“ weg, denn Du willst das mit Installation, sonst hast Du eben genau diese Probleme was man tun muss, damit auch immer alles gefunden wird, insbesondere ohne vom aktuellen Arbeitsverzeichnis abhängig zu sein.
Danke für den Tipp. Mit sehr viel lesen (und sogar einem recht hilfreichen udemy video) bin ich jetzt weiter gekommen. Jedoch hängt es noch an einer Stelle. Folgende Struktur (und Programm, welches eigentlich nur Blödsinn macht, es dient rein dem Ausprobieren verschiedener Dinge und hat nichts Produktives...). (Einen Tree kann ich ja nicht her malen, daher schreibe ich Pfade und Dateinamen mit in den Code, müsste zum Testen halt entsprechend angelegt werden, falls es nicht zuviel Umstand ist).
Code: Alles auswählen
## ./config.json
{
"server" : "http://localhost",
"user" : "ich_selbst",
"passwd" : "meins"
}
.
Code: Alles auswählen
## ./lib_work_json/test.py
#/usr/bin/env python
from lib_work_json import WorkJson
def main():
WorkJson().load_json()
WorkJson().show_example()
if __name__ == '__main__':
main()
Code: Alles auswählen
## ./lib_work_json/setup.py
from setuptools import setup, find_packages
setup(
name = 'lib_work_json',
version = '0.0.1',
packages = find_packages(),
install_requires = ['PyQt6==6.8.0', 'PyQt6_sip==13.9.1'],
entry_points = {
'console_scripts' : [
'work_json = lib_work_json.__main__:main',
'example = lib_work_json.__main__:show_example'
]
}
)
Code: Alles auswählen
## ./lib_work_json/requirements.txt
PyQt6==6.8.0
PyQt6_sip==13.9.1
Code: Alles auswählen
## ./lib_work_json/lib_work_json/__init__.py
from .sub_dir import WorkJson
Code: Alles auswählen
## ./lib_work_json/lib_work_json/__main__.py
from .sub_dir import WorkJson
def main():
WorkJson().load_json()
def example():
WorkJson().show_example()
if __name__ == '__main__':
main()
Code: Alles auswählen
## ./lib_work_json/lib_work_json/sub_dir/__init__.py
from .example import WorkJson
Code: Alles auswählen
#/usr/bin/env python
## ./lib_work_json/lib_work_json/sub_dir/example.py
from .helper import TESTVAR
import json
import sys
from pathlib import Path
from pprint import pprint
from PyQt6.QtCore import QDate
class WorkJson:
def __init__(self):
pass
def load_json(self):
args = sys.argv
if len(args) != 2:
print("Usage <prog> <config-file>")
sys.exit(1)
# filename = args[1]
# handle = Path(__file__).parent.joinpath(filename)
# alternative
handle = args[1]
with open(handle, 'r', encoding='utf-8') as f:
_data = json.load(f)
print(_data)
d1 = QDate(1995, 5, 17)
d2 = QDate(2025, 1, 1)
print(d1)
print(d2)
print(d1.daysTo(d2))
print(TESTVAR)
def show_example(self):
print('Das ist ein Example')
Code: Alles auswählen
## ./lib_work_json/lib_work_json/sub_dir/helper.py
TESTVAR = 'Das ist ein importierter String'
Das Ganze läuft in venv Umgebung, alles unter Linux.
Stehe ich nun in
und rufe da
auf, tut es was es soll. Wenn ich im gleichen Pfad mit
ein Paket baue, wir das auch in
abgelegt und lässt sich mit
installieren. pip list zeigt das auch an.
Zum Test gehe ich nun nach ./ (um zu verhindern, dass nicht der source code gestartet wird) und starte
, funktioniert das, wie erwartet. Will ich aber nun den anderen entrypoint (example) starten, kommt die Meldung:
Code: Alles auswählen
(.venv) [***@rechnername python]$ example
Traceback (most recent call last):
File "/home/***/develop/git/python/.venv/bin/example", line 5, in <module>
from lib_work_json.__main__ import show_example
ImportError: cannot import name 'show_example' from 'lib_work_json.__main__' (/home/***/develop/git/python/.venv/lib/python3.13/site-packages/lib_work_json/__main__.py)
Warum wird der zweite entry point nicht erreicht?
Danke und Gruß