我根据不同的导入规则在教程之后使用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'
我不明白问题是什么,是同一个文件夹中的两个文件。 提前致谢
答案 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