我试图用函数将我的脚本分离成几个文件,所以我将一些函数移到了单独的文件中,并希望将它们导入到一个主文件中.结构是:

core/
  main.py
  posts_run.py

posts_run.py有两个功能,get_all_postsretrieve_posts,所以我try 使用以下功能导入get_all_posts:

from posts_run import get_all_posts

Python 3.5给出了以下错误:

ImportError: cannot import name 'get_all_posts'

主要的py包含以下代码行:

import vk
from configs import client_id, login, password
session = vk.AuthSession(scope='wall,friends,photos,status,groups,offline,messages',   app_id=client_id, user_login=login,
                     user_password=password)
api = vk.API(session)

然后我需要将api导入函数,这样我就能够获得对vk的api调用.

全堆栈跟踪

Traceback (most recent call last):
  File "E:/gited/vkscrap/core/main.py", line 26, in <module>
    from posts_run import get_all_posts
  File "E:\gited\vkscrap\core\posts_run.py", line 7, in <module>
    from main import api, absolute_url, fullname
  File "E:\gited\vkscrap\core\main.py", line 26, in <module>
    from posts_run import get_all_posts
ImportError: cannot import name 'get_all_posts'

api-主要是api = vk.API(session).皮耶.

推荐答案

你需要在核心文件夹中添加__init__.py.您之所以会收到此错误,是因为python无法将您的文件夹识别为python package

之后呢

from .posts_run import get_all_posts
#    ^ here do relative import
# or
from core.posts_run import get_all_posts
# because your package named 'core' and importing looks in root folder

Python-3.x相关问答推荐

为什么我不能通过索引获取字典键?

spinbutton调整up/down箭头

删除重复项,但将值相加为一

在python中循环处理时并行写入文件

所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?

Anaconda 和升级到新的 M1 Mac

没有找到 Python;不带参数运行以从 Microsoft Store 安装,或从“设置”中禁用此快捷方式

你如何修复 numpy 和 pandas 的“runtimeError: package failed to pass a sanity check”?

在 ubuntu 20.04 中安装 libpq-dev 时出现问题

NumPy ndarray dtype 的类型提示?

Python 多行 with 语句

如何在导入 win32api 时修复“ImportError: DLL load failed”

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

如何使用 Homebrew 在我的 Mac 上默认 Python3.8?

asyncio 中所有这些已弃用的“循环”参数是什么?

python中整数除法和float到int转换之间差异的原因是什么?

使用 pytest.fixture 返回模拟对象的正确方法

RuntimeError:输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)应该相同

如何解决“No module named 'frontend'”错误消息?

Python 3 urllib 忽略 SSL 证书验证