Ошибка при импорте 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 шт):
я предложу вам следующее:
- вот структура вашего проекта:
внимание, модули, которые я разложил по папкам взяты из поста 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.
# ^^^^^^^^^ # !!!



