从同一文件夹

时间:2017-05-09 08:52:27

标签: python python-3.x flask

我根据不同的导入规则在教程之后使用Python 3.5构建Flask应用程序。通过查找类似的问题,我设法通过将文件夹添加到路径来解决基于从嵌套文件夹导入的ImportError,但我仍然无法从同一文件夹(已在路径中)的脚本中导入函数。文件夹结构如下:

DoubleDibz  
├── app
│   ├── __init__.py
│   ├── api 
│   │   ├── __init__.py
│   │   └── helloworld.py
│   ├── app.py
│   ├── common
│   │   ├── __init__.py
│   │   └── constants.py
│   ├── config.py
│   ├── extensions.py
│   ├── static
│   └── templates
└── run.py

在app.py中,我使用以下代码从config.py导入一个函数:

import config as Config

但是我收到了这个错误:

ImportError: No module named 'config'

我不明白问题是什么,是同一个文件夹中的两个文件。 提前致谢

5 个答案:

答案 0 :(得分:20)

你试过吗

import app.config as Config

它为我做了诀窍。

答案 1 :(得分:11)

要从同一文件夹导入,您可以执行以下操作:

from .config import function_or_class_in_config_file

或者按照您的要求使用别名导入完整配置:

from ..app import config as Config

答案 2 :(得分:3)

# imports all functions    
import config
# you invoke it this way
config.my_function()

# import specific function
from config import my_function
# you invoke it this way
my_function()

如果不是从同一文件夹调用app.py,则可以执行此操作:

# csfp - current_script_folder_path
csfp = os.path.abspath(os.path.dirname(__file__))
if csfp not in sys.path:
    sys.path.insert(0, csfp)
# import it and invoke it by one of the ways described above

答案 3 :(得分:0)

这对我有用:

from config import *

答案 4 :(得分:0)

另一种较短的方法是:

import .config as Config