gpt4 book ai didi

python - 尽管尝试了多种建议,但无法在 Python 中导入本地模块

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:53 25 4
gpt4 key购买 nike

我已经阅读了大约十篇关于如何导入本地模块的帖子,但我仍然困惑于为什么这不起作用。我有一个非常简单的模块 actor.py,其中只有一个类:

class Actor(object):
def __init__(self, name, age):
self.name = name
self.age = age

我正在尝试将其导入到同一目录中的另一个模块 scraper.py 中: enter image description here

一些修复已将没有 init.py 列为本地导入的问题,所以我知道这不是我的问题。最初我尝试了这些:

import actor

from actor import Actor

但它告诉我 actor 和 Actor 是未解析的引用。 here告诉我这是 Python 2 语法,而我正在使用 Python 3。该答案建议我这样做:

from .actor import Actor

当我使用该语法运行程序时,出现此错误:

ModuleNotFoundError: No module named '__main__.actor'; '__main__' is not a package

所以我又去搜索,this帖子告诉我删除“ Actor ”中的点,但如前所述,我也尝试过。我最终的猜测是

from . import actor

但这会产生

ImportError: cannot import name 'actor'

我关注here ,但那里的答案提到了循环依赖,我确信 Actor 和抓取者没有。我可能没有正确编写我的模块吗?我想不出任何其他方法来编写导入语句。

编辑:如果有帮助的话,我正在使用 Intellij

最佳答案

尝试from WebScraper.actor import Actor 。如果这不起作用,因为您的包目录不在 PYTHONPATH 中。您可以在 IntelliJ Python run configuration 中进行设置.

相对导入对您不起作用,因为您正在尝试将模块作为脚本运行。您可以在 https://stackoverflow.com/a/8300343/7088038 中查看所发生情况的解释。 。如果您希望相对导入起作用,则必须添加 __main__.py文件添加到您的模块以允许其运行,或者从使用绝对导入的外部脚本执行,这样就不会破坏包命名空间。

另一个风格注释 - 通常(但并非总是)Python 中的包名称全部使用小写名称。 CamelCase 是为类名保留的。因此,如果您想遵循约定,您可以将您的包命名为 webscraper并使用from webscraper.actor import Actor

关于python - 尽管尝试了多种建议,但无法在 Python 中导入本地模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48971427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com