Python脚本在PyCharm中工作,但在terminal中不工作

2024-09-29 21:37:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前正在尝试从其他文件夹导入一个模块。 像这样

from Assets.resources.libs.pout import Printer, ForeColor, BackColor

这个导入方法在PyCharm中工作得非常好,但是,当我尝试在cmd或IDLE中启动文件时,我得到了这个错误

ModuleNotFoundError: No module named 'Assets'

这是我从main.py到pout.py的文件结构:

- Assets
  - main.py
  - resources
    - libs
      - pout.py

有没有关于我如何解决这个问题的线索? 感谢您的帮助


Tags: 模块文件方法frompyimport文件夹main
1条回答
网友
1楼 · 发布于 2024-09-29 21:37:44

编辑:最初的答案基于这样的假设,即您正在运行的脚本位于给定的文件夹结构中,重新阅读后告诉我可能不是这样。一般的解决办法是这样做

sys.path.append('path_to_Assets')

但更多细节请阅读下文

原始答案

在运行脚本的两种方法中,可以从中加载模块的路径将有所不同

如果你加上

import sys
print(sys.path)

在导入之前的脚本顶部,您应该能够看到差异

当您自己运行它时,第一个条目将是脚本本身的位置,后面是各种系统/环境路径。当您在PyCharm中运行它时,您将看到相同的第一个条目,然后是项目顶层的条目。这就是它从PyCharm运行时查找模块的方式。此行为由运行配置中的“将内容根添加到PYTHONPATH”选项控制

以编程方式添加此路径在所有情况下都能正常工作并不是件小事,因为与PyCharm不同,您的脚本没有顶层应该在哪里的概念。但是如果您知道您将从顶层运行脚本,即您的工作目录将是包含资产的文件夹,并且您正在运行类似python Assets/main.py的东西,那么您可以这样做

sys.path.append(os.path.abspath('.'))

这将为路径添加正确的文件夹

相关问题 更多 >

    热门问题