当前位置: 首页 > 知识库问答 >
问题:

python绝对导入和pycharm[副本]

靳睿
2023-03-14

当我使用相对导入时,我的代码运行正常,但pycharm抱怨。总之。py,导入行用红色下划线,我没有完成。

如果我尝试通过在任何地方添加“app.”来切换到使用绝对导入,pycharm 很高兴,但代码不再运行。我得到:“ModuleNotFoundError:没有名为'app'的模块”

这是我的项目的树形结构。这是我的test_import文件夹的内容:

.
-- app
    | -- main.py
    | -- mul.py
    | -- folder
         |-- sum.py

main.py

from folder.sum import sum, mul_import
from mul import mul

if __name__ == '__main__':
    a=1
    b=2
    print("sum ", sum(a, b))
    print("mul ", mul(a, b))
    print("mul import ", mul_import(a, b))

mul.py:

def mul(a, b):
    return a * b

sum.py:

from mul import mul

def sum(a, b):
    return a + b

def mul_import(a, b):
    return mul(a, b)

是否可以在任何地方使用“app.”来完成但使代码正常工作?

共有1个答案

翟鸿振
2023-03-14

在pycharm中,我必须使用绿色箭头运行,而不是在命令行中使用“python main.py”或“python app/main.py”。这是有效的,因为项目目录已添加到 pythonpath 中(在运行的配置中)。

对于docker,我必须将项目目录添加到pythonpath。

 类似资料:
  • 问题内容: 我想知道在Python应用程序中导入包的首选方法。我有一个这样的包结构: project.app1.views进口project.app1.models和project.app2.models。我想到有两种方法可以做到这一点。 绝对进口: 或具有明确的相对导入,如在Python 2.5中使用PEP 328引入的那样: 什么是最pythonic的方式做到这一点? 问题答案: 绝对进口。从

  • 当我在PyCharm Community Edition中编写Python3代码时,我对导入逻辑感到恼火,下面是我的结构。 在app.py中,我使用以下代码导入orm。 它在PyCharm中看起来很好,但当我运行app.py时,由于以下错误,它将失败 它运行良好,但在Pycharm中有导入错误。它是。我想在PyCharm中使用代码跟踪,所以我想知道如何修复这个问题。

  • 我读了很多与我所问的问题相关的答案,但我仍然不明白如何使我正在尝试的事情成为可能。所以让我们直奔主题。我将报告我的应用程序的简化版本。 null 现在,集群和解析器包中包含的python脚本应该使用support_class中包含的myclass.py。 我尝试了相对导入,但它们不起作用,因为我希望直接运行集群和解析器包中包含的脚本,并且我不想使用-m选项。 python parser.py[参数

  • 我读了无数关于python中相对导入的讨论,我认为它如此令人困惑的原因之一是它在一个python版本之间发生了变化(我的版本是3.6)。但这里的罪魁祸首似乎是PyCharm(除非我弄错了..)我想知道是否有人找到了解决这个问题的办法。对于具有此布局的项目: 假设aa.py在文件中包含一些fuction,如果我编写这个导入: 因此,为了让PyCharm高兴,我可以将添加到导入中,然后错误似乎就解决了

  • 在我开始之前,我已经做了很多关于我得到的这个特定问题的搜索,可能是我搜索得不好。 我正在尝试导入以前使用pip3安装的库,如pandas和NumPy。。。去我的PyCharm项目,我不知道怎么做。 我所发现的是,我可以再次安装它们。我不想再次安装所有库,提前感谢您的帮助。 编辑#1:是否可以将整个本地文件夹添加到外部库?

  • 问题内容: 我似乎无法让绝对导入在python中工作。这是我的文件结构: foo.py: 我反而得到: 这到底是怎么回事?我觉得我缺少基本的东西。尽管这个例子很简单,但我需要绝对导入才能为实际项目工作,因此仅用相对导入替换导入是不可行的。我正在使用python 2.7.13 预先感谢您的任何见解! 问题答案: 由于未显示,因此我必须假设您正在运行,这会将脚本()的目录放在开始的位置,而实际上您希望