【发布时间】:2018-08-04 21:38:06
【问题描述】:
我已经阅读了大约十篇关于如何导入本地模块的帖子,但我仍然不明白为什么这不起作用。我有一个非常简单的模块,actor.py,里面只有一个类:
class Actor(object):
def __init__(self, name, age):
self.name = name
self.age = age
我正在尝试将它导入到同一目录中的另一个模块 scraper.py 中:
一些修复程序已将没有 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 帖子告诉我删除“演员”中的点,但如前所述,我也尝试过。我的最终猜测是
from . import actor
但这会产生
ImportError: cannot import name 'actor'
我关注here,但那里的答案提到了循环依赖,我敢肯定演员和刮刀没有。我可能没有正确编写我的模块吗?我想不出任何其他方法来编写导入语句。
编辑:如果它有帮助,我正在使用 Intellij
【问题讨论】:
-
你想如何运行它?
'__main__' is not a package表明您的执行方式存在问题。 -
应该是:
from actor import Actor,您从同一目录中的文件导入类。 -
@avigil 我在 scraper.py 中运行 main 方法。
-
所以
python -m WebScraper.scraper?如果它是模块的一部分,则不能使用python scraper.py直接调用它。 -
或者如果你在 IntelliJ 中运行,这是你的 IDE 运行配置的问题,而不是代码本身。
标签: python python-3.x import python-import python-module