Ich habe ein setup.py
Skript für eine GUI-Anwendung und ein Runner-Skript myapp
erstellt. Der Läufer Skript enthält:Warum wird das Python-Modul ohne seine Funktionen importiert?
#!/usr/bin/env python3
import myapp
myapp.gui_mode()
Die Anwendung kann mit python3 myapp.py
Hier von der Kommandozeile ausgeführt werden, wie myapp.py
aussieht:
#!/usr/bin/evn python3
def gui_mode():
run_app()
def main():
print("Starting UI")
gui_mode()
if __name__ == '__main__':
main()
Nachdem ich die App mit sudo python3 setup.py install
und attemp installieren, um sie auszuführen von Konsole mit myapp
erhalte ich die folgende Nachricht: AttributeError: module 'myapp' has no attribute 'gui_mode'
Ok, beginne ich python3
Dolmetscher und überprüfen:
import myapp
print(dir(myapp))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Ich frage mich, warum myapp
ohne eigene Funktionen eingeführt zu werden?
UPDATE
In [4]: print(myapp.__file__)
/home/tastyminerals/dev/NEFI2/nefi2/__init__.py
Hier ist die Struktur Projekt:
APP2/
setup.py
myapp/myapp.py
myapp/bin/run_myapp <-- renamed runner file
myapp/__init__.py
myapp/data
Kritische Teil setup.py
:
packages=['myapp'],
scripts=[
'myapp/bin/run_myapp'
],
Es wird als '__init __. Py' geladen, das leer ist. – minerals