import klappt nicht obwohl Modul existiert

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
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

Hallo Leute,

habe seit gestern ein etwas seltsames Problem. Wie ihr am Traceback sehen könnt versuche ich im Modul sej/apps/lissy Teile des Moduls sej.lib.apps.logger zu importieren. Die Fehlermeldung sieht mit python3.5 so aus:

Code: Alles auswählen

$ python3.5 sej/apps/lissy.py 
Traceback (most recent call last):
  File "sej/apps/lissy.py", line 22, in <module>
    from sej.lib.apps.logger import Logging, Base
ImportError: No module named 'sej.lib.apps'
Mit Python3.6 so:

Code: Alles auswählen

$ python3.6 sej/apps/lissy.py 
Traceback (most recent call last):
  File "sej/apps/lissy.py", line 22, in <module>
    from sej.lib.apps.logger import Logging, Base
ModuleNotFoundError: No module named 'sej.lib.apps'
Seltsam ist doch, dass das Modul 'sej.lib.apps' nicht zu finden sei, was ja klar ist, denn dies ist ja ein Package. Ich wollte doch aber gar nichts aus sej.lib.apps sondern aus sej.lib.apps.logger???

Hier die Auflistung der Dateien in den dist-packages von Python 3.5 und 3.6 (völlig identisch):

Code: Alles auswählen

ls -1 /usr/local/lib/python3.5/dist-packages/sej/lib/apps/
core.py
ini.py
__init__.py
logger.py
__pycache__
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

Startet man den Python-Interpreter und importiert das Modul lissy.py dort funktioniert alles problemlos!

Ich habe zur Fehlersuche iin jedem betroffenen Modul vor jedem Importstatement ein print(...) gesetzt, dass man sieht was passiert:

Code: Alles auswählen

Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sej.apps import lissy
sej/apps/lissy.py: import os
sej/apps/lissy.py: from blinker import Signal
sej/apps/lissy.py: from peewee import SqliteDatabase, sort_models
sej/apps/lissy.py: from sej.lib.apps.logger import Logging, Base
sej/lib/apps/logger.py: import logging
sej/lib/apps/logger.py: import logging.config
sej/lib/apps/logger.py: import yaml
sej/lib/apps/logger.py: from sej.lib.apps.core import Base, opj, shutil, os
sej/lib/apps/core.py: import os
sej/lib/apps/core.py: import shutil
sej/apps/lissy.py: from sej.lib.apps.ini import Inifile
sej/lib/apps/ini.py: import io
sej/lib/apps/ini.py: from configparser import ConfigParser
sej/lib/apps/ini.py: from datetime import datetime
sej/lib/apps/ini.py: from sej.lib.apps.core import Base, opj, ope
sej/apps/lissy: from sej.lib.datum import now
sej/apps/lissy.py: from sej.lib.schule.db.core import databaseproxy
sej/lib/schule/db/core.py: from peewee import Proxy, Model, AutoField, CharField, TextField, DateField, TimeField, FloatField, IntegerField, BooleanField, DateTimeField, ForeignKeyField
sej/apps/lissy.py :from sej.lib.schule.db.repository import tabl
sej/apps/lissy.py: from sej.lib.system import System
sej/apps/lissy.py: from sej.lib.db.sqliteinfo import get_tablenames
sej/lib/db/sqliteinfo.py: import sqlite3
>>> 
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

OK - Problem gelöst!

Ich programmiere und teste in PyCham! Dort wird über die Oberfläche die "setup.py" gestartet, welche die Dateien in die globalen "dist-packages" schiebt.
Ein Konsolenaufruf mit "python pfad/zum/skript/in/sej/apps/lissy.py" bewirkte aber, dass eine uralte Version im Userverzeichnis ~/.local/lib/python3.X/site-packages/sej/... verwendet wurde!!! Arrrrggh.

Durch das Flag -v und nach dem Durchforsten der üppigen Ausgabe fiel auf, dass das falsche Paket benutzt wird!

Code: Alles auswählen

python -v pfad/zum/skript/in/sej/apps/lissy.py
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
Antworten