Как исправить ‘modulenotfounderror’, если он работает в pycharm?

#python #pycharm #python-import

#python #pycharm #python-импорт

Вопрос:

для меня это странная проблема. Я разработал программу в pycharm, которая работает хорошо. Если я собираюсь запустить эту программу в терминале или вообще за пределами pycharm, происходит много ошибок ModuleNotFoundErrors. Почему импорт в pycharm правильный, но за его пределами неправильный?

Я попытался изменить импорт. Например, я изменил «из core.bot import Bot» на «из bot import Bot». Теперь он работает в терминале, но в pycharm строка кода подчеркнута красным цветом.

Некоторые примеры импорта:

 '''
from core.bot import Bot
'''

'''
from talib._ta_lib import BBANDS, SMA, MACD
from binance.BinanceKeys import BinanceKey1
from binance.client import Client
'''
 

это структура папок

Комментарии:

1. Какая у вас структура папок и из какой вы ее запускаете? похоже, вы запускаете терминал внутри core папки или что-то в этом роде, тогда как PyCharm будет работать с более высокого уровня.

2. я использовал разные вещи. например, я запустил терминал из ядра (как и сказал u) или из одной папки над ним. Также я изменил рабочий каталог с core на папку над ним. Моя папка проекта — «tradingbot», в этой папке находятся «core» и «binance». На самом деле рабочий каталог tradingbot / core

3. Можете ли вы предоставить скриншот вашей папки и файловой структуры в PyCharm? Очень сложно диагностировать это, не видя структуру. Вероятно, в вашем рабочем каталоге должен быть tradingbot, чтобы ему это import core понравилось

4. я изменил свой рабочий каталог на core и изменил импорт на «из bot import Bot». теперь этот импорт помечен как неправильный. Но я могу запустить код в pycharm без ошибок. Но почему он помечен как неправильный?

5. Я думаю, вы путаете скрипт, который вы запускаете, с пакетами. Вам либо нужно правильно установить пакеты (с помощью pip и т. Д.), Либо пакеты должны быть в пути (каталог, в котором запущен скрипт, Является очевидным местом.) Если вы работаете BotLauncherTerminal.py , это, вероятно, должно быть на уровне tradingbot, который использует пакеты core и binance.

Ответ №1:

Чтобы избежать подобных проблем, вы должны отметить в Pycharm каталог, из которого вы будете вызывать свой основной скрипт, в качестве исходного кода Root.

Для этого щелкните правой кнопкой мыши на папке в древовидной структуре папок Pycharm (вкладка Project), выберите Mark Directory as -> Sources Root . Папка станет синего цвета. Все ваши пути импорта теперь начинаются с этой корневой папки.

Как видно из обсуждения в комментариях и того, как факт изменения строки импорта приводил к сбою импорта в Pycharm или в терминале, ваша проблема возникла из-за разницы в том, какая папка считалась корневой. Используя настройку, которую я объясняю, можно избежать таких проблем.