Ошибка при импорте ModuleNotFoundError: No module named

Есть структура

В файле starting_window код:

import sys
from PyQt5 import QtWidgets
from resources.start_win import Ui_MainWindow


class StartingWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(StartingWindow, self).__init__()
        ui = Ui_MainWindow()
        ui.setupUi(self)


if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    start_win = StartingWindow()
    start_win.show()
    sys.exit(app.exec_())

При запуске через терминал - python interface\starting_window возникает ошибка ModuleNotFoundError: No module named 'resources'.

При поиске решения обнаружил, что код работает при запуске через Run/Debug Configuration с отметкой "Add content roots to PYTHONPATH". Без этой отметки такая же ошибка.

То есть, для того, чтобы запустить код через терминал нужно добавить путь до папки resources в PYTHONPATH.

sys.path.append(...) не работает. Папка добавляется, но модуль не находится. mark as sourse root не работает add to interpreter path тоже

Может ли это быть ошибка в Pycharm или же это я туплю?

UPD: Код работает, если запустить через терминал с флагом -m или же если создать файл в корневой папке и в нём прописать импорт файла starting_window.py. Есть ли другой способ запуска, например, прописав что-то где-то в настройках PyCharm?


Ответы (2 шт):

Автор решения: Guron

пуск-поиск-система-изменить параметры-дополнительно-параметры среды-path-изменить-создать введите сюда описание изображения

→ Ссылка
Автор решения: S. Nick

я предложу вам следующее:

  • вот структура вашего проекта:

введите сюда описание изображения

  • внимание, модули, которые я разложил по папкам взяты из поста PyQt5 и Pyside2 проблемма в запуске дизайна программы

  • создаем модуль, например projectAist.py, который содержит одну строку import interface.main_1181916 и его в папку Aist

  • запускаем с любого места python D:\_Qt\__Qt\Test\Aist\projectAist.py


projectAist.py

import interface.main_1181916        # !!! interface.
#      ^^^^^^^^^                     # !!!

main_1181916.py

import sys
from PyQt5 import QtCore, QtGui, QtWidgets


from resources.file_1181916_ui import Ui_MainWindow    # !!! resources.
#    ^^^^^^^^^^                                        # !!!

app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

def bp():
    print(f'def bp(): log in')
 
ui.pushButton.clicked.connect(bp)
sys.exit(app.exec_())

file_1181916_ui.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(961, 565)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, -90, 961, 731))
        self.label.setStyleSheet("image:url(:/newPrefix/im.png)")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(710, 9, 121, 41))
        self.pushButton.setStyleSheet("QPushButton{\n"
"                background-color: rgb(22.745098%, 26.6666667%, 36.8627451%);\n"
"}\n"
"\n"
"QPushButton:hover{\n"
"    background-color: silver;\n"
"}\n"
"    ")
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "войти"))


import resources.file_rc                                                    # !!! resources.
#      ^^^^^^^^^                                                            # !!! 

введите сюда описание изображения

→ Ссылка