【问题标题】:How to fix 'modulenotfounderror' if it is working in pycharm?如果它在pycharm中工作,如何修复'modulenotfounderror'?
【发布时间】:2019-04-17 12:10:01
【问题描述】:

对我来说这是一个奇怪的问题。我在pycharm中开发了一个程序,运行良好。如果我要在终端中或通常在 pycharm 之外启动该程序,则会发生很多 ModuleNotFoundErrors。为什么 pycharm 中的导入是正确的,但在它之外是错误的?

我尝试更改导入。例如,我将“from core.bot import Bot”更改为“from 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
'''

【问题讨论】:

  • 你有什么文件夹结构,你是从哪个文件夹中运行它的?听起来您正在core 文件夹或某种文件夹中运行终端,而 PyCharm 将从更高级别运行。
  • 我尝试了不同的东西。例如,我从核心(如你所说)或它上面的一个文件夹中运行了终端。我还将工作目录从核心更改为它上面的文件夹。我的项目文件夹是“tradingbot”,这个文件夹是“core”和“binance”。实际工作目录是 tradingbot/core
  • 您能否提供您在 PyCharm 中的文件夹和文件结构的屏幕截图?很难在没有看到结构的情况下诊断这一点。你的工作目录可能需要是 tradingbot 才能像 import core 这样
  • 我将工作目录更改为核心并将导入更改为“从机器人导入机器人”。现在这个导入被标记为错误。但我可以在 pycharm 中运行代码而不会出错。但是为什么会被标记为错误呢?
  • 我认为您将正在运行的脚本与软件包混淆了。您要么需要正确安装软件包(使用 pip 等),要么软件包应该在路径中(运行脚本的目录是显而易见的地方。)如果您正在运行 BotLauncherTerminal.py,那可能应该在交易机器人级别,使用 core 和 binance 包。

标签: python pycharm python-import


【解决方案1】:

为避免此类问题,您应该在 Pycharm 中将调用主脚本的目录标记为 Sources Root。

为此,右键单击 Pycharm 树文件夹结构(项目选项卡)上的文件夹,选择Mark Directory as -> Sources Root。该文件夹将变为蓝色。您的所有导入路径现在都从此根文件夹开始。

从 cmets 中的讨论以及更改导入行的事实如何导致 Pycharm 或终端中的导入崩溃,您的问题来自于哪个文件夹被视为根目录的差异。通过使用我解释的设置,可以避免此类问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2022-11-11
    • 2023-01-18
    • 1970-01-01
    • 2020-01-03
    • 2022-12-16
    相关资源
    最近更新 更多