我试图将我的脚本分成几个带有函数的文件,因此我将一些函数移动到单独的文件中,并希望将它们导入到一个主文件中.结构是:
core/
main.py
posts_run.py
Run Code Online (Sandbox Code Playgroud)
posts_run.py
有两个功能,get_all_posts
并且retrieve_posts
,所以我尝试导入get_all_posts
具有:
from posts_run import get_all_posts
Run Code Online (Sandbox Code Playgroud)
Python 3.5给出了错误:
ImportError: cannot import name 'get_all_posts'
Run Code Online (Sandbox Code Playgroud)
Main.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)
Run Code Online (Sandbox Code Playgroud)
然后我需要将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'
Run Code Online (Sandbox Code Playgroud)
api - 是一个api = vk.API(session)
在main.py. absolute_url和fullname也存储在main.py中.我在Windows 7上使用PyCharm 2016.1,在virtualenv中使用Python 3.5 x64.如何导入此功能?
Sar*_*iev 10
您需要添加__init__.py
核心文件夹.您收到此错误是因为python无法将您的文件夹识别为python包
之后呢
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
Run Code Online (Sandbox Code Playgroud)
MyFile.py:
def myfunc():
return 12
Run Code Online (Sandbox Code Playgroud)
启动python解释器:
>>> from MyFile import myFunc
>>> myFunc()
12
Run Code Online (Sandbox Code Playgroud)
或者:
>>> import MyFile
>>> MyFile.myFunc()
12
Run Code Online (Sandbox Code Playgroud)
这在您的计算机上不起作用吗?
归档时间: |
|
查看次数: |
16907 次 |
最近记录: |