[Python] Running Python Modules (-m) - Relative Path Error - Python 3.12.8

Discussão em 'Python' iniciado por Stack, Maio 3, 2025.

  1. Stack

    Stack Membro Participativo

    What do I want?


    Run my project1 package as follows:

    (.venv) C:\Users\trg\Escritorio\project1> python -m src.project1.__main__


    also understand once and for all how Python execution paths work.


    • Why does it work in PyCharm but fail in CMD?


    • What is the recommended way to organize and import modules so that -m always resolves to identical paths in IDEs and terminals?
    My Project Structure - Simplified


    project1/
    | requirements.txt
    \---.venv
    \---src
    | __init__.py
    +---project1
    | | log.log
    | | NOTICE
    | | _converter.py
    | | _files_manager.py
    | | _project1.py
    | | _returning.py
    | | __init__.py
    | | __main__.py
    | |
    | +---database
    | | config.db
    | | log.log
    | | _db.py
    | | __init__.py
    | |
    | +---interface
    | | | _interface.py
    | | | _lang.py # He is the one who makes one of the mistakes




    project1/src/project1/__init__.py

    from ._files_manager import FileManager
    from ._converter import Converter
    from ._pymd import Pymd
    from ._interface import MainWindow

    __all__:list[str] = ['FileManager', 'Converter', 'Pymd', 'MainWindow']


    project1/src/project1/interfaces/_lang.py

    from PySide6.QtCore import Qt, QTranslator, QLocale
    from PySide6.QtWidgets import QApplication
    from .ui_dialog_language import Ui_Lang_Dialog
    from PySide6.QtWidgets import QDialog
    from sqlazo import Database

    # I used relative path to the execution file (./database/ => is at __main__.py level)
    # works in pycharm
    db = Database('./database/config.db', False)

    # Code...

    complete error (src/project1/interface/_lang.py)


    (.venv) C:\Users\trg\Escritorio\project1>python -m src.PYMD.__main__
    ←[33mVisite esta página (https://tutosrive.github.io/chromologger/) antes de ejecutar este módulo←[0m
    ←[31mRevise el archivo "log" que se encuentra en esta ruta: C:\Users\trg\Escritorio\project1\.venv\Lib\site-packages\chromologger\log.log←[0m
    ←[31mRevise el archivo "log" que se encuentra en esta ruta: C:\Users\trg\Escritorio\project1\.venv\Lib\site-packages\chromologger\log.log←[0m
    ←[34mRevise C:\Users\trg\Escritorio\project1\log.log para ver los registros.←[0m
    Traceback (most recent call last):
    File "<frozen runpy>", line 189, in _run_module_as_main
    File "<frozen runpy>", line 112, in _get_module_details
    File "C:\Users\trg\Escritorio\project1\src\project1\__init__.py", line 3, in <module>
    from .project1 import run_app
    File "C:\Users\trg\Escritorio\project1\src\project1\_project1.py", line 4, in <module>
    from .interface import run
    File "C:\Users\santi\Escritorio\project1\src\project1\interface\__init__.py", line 1, in <module>
    from ._initialHelp import InitialHelp
    File "C:\Users\trg\Escritorio\project1\src\project1\interface\_initialHelp.py", line 3, in <module>
    from ._lang import LanguageManager
    File "C:\Users\trg\Escritorio\project1\src\project1\interface\_lang.py", line 7, in <module>
    db = Database('./database/config.db', False)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\trg\Escritorio\project1\.venv\Lib\site-packages\sqlazo\sqlazo.py", line 37, in __init__
    self.cur:sql.Cursor = self.__cursor()
    ^^^^^^^^^^^^^^^
    File "C:\Users\trg\Escritorio\project1\.venv\Lib\site-packages\sqlazo\sqlazo.py", line 62, in __cursor
    return self.conn.cursor()
    ^^^^^^^^^^^^^^^^
    AttributeError: 'int' object has no attribute 'cursor'


    I ran this command python -m src.project1.__main__ from different paths (within the project), but always got the same error.

    I expected my program's interface to start (just like it does when I run it in PyCharm)

    Continue reading...

Compartilhe esta Página