如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.
想象一下这个目录结构:
app/
__init__.py
sub1/
__init__.py
mod1.py
sub2/
__init__.py
mod2.py
Run Code Online (Sandbox Code Playgroud)
我正在编码mod1,我需要从中导入一些东西mod2.我该怎么办?
我尝试了from ..sub2 import mod2但是我得到了"尝试非包装中的相对导入".
我google了一下,但发现只有" sys.path操纵"黑客.有没有干净的方式?
编辑:我__init__.py的所有人目前都是空的
EDIT2:我想这样做,因为SUB2包含了为子包(共享类sub1,subX等等).
Edit3:我正在寻找的行为与PEP 366中描述的相同(感谢John B)
我试图将我的脚本分成几个带有函数的文件,因此我将一些函数移动到单独的文件中,并希望将它们导入到一个主文件中.结构是:
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 …Run Code Online (Sandbox Code Playgroud)