无法从当前工作目录外部导入功能

时间:2019-05-23 21:15:58

标签: python python-3.x python-import importerror

我目前在导入一些函数时遇到困难,这些函数位于主烧瓶应用程序脚本的工作目录的父目录中的python文件中。这是结构的样子

project_folder
- public
--app.py
-scripts.py

这是app.py的副本代码:

def some_function():
    from scripts import func_one, func_two
    func_one()
    func_two()
    print('done')


if __name__ == "__main__":
    some_function()

scripts.py包含如下功能:

def func_one():
    print('function one successfully imported')


def func_two():
    print('function two successfully imported')

在我的app.py中导入这些函数的pythonic方法是什么?

2 个答案:

答案 0 :(得分:1)

在其前面加上一个点,以便它搜索当前目录(project_folder)而不是您的python路径:

from .scripts import func_one, func_two

相对导入的详细信息在PEP 328

中进行了描述

编辑:我假设您正在使用软件包。考虑添加一个__init__.py文件。

无论如何,您可以通过更改系统路径在python中导入任何内容:

import sys
sys.path.append("/path/to/directory")
from x import y

答案 1 :(得分:1)

1。

import importlib.util

def loadbasic():
    spec = importlib.util.spec_from_file_location("basic", os.path.join(os.path.split(__file__)[0], 'basic.py'))
    basic = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(basic)
    return basic #returns a module
  1. 或在目录中创建一个空文件__init__.py

  1. 请勿使用追加内容污染您的路径。