如何在另一个Flask中导入python文件?

How to import python file in another Flask?

本问题已经有最佳答案,请猛点这里访问。

我有一个init.py文件。我在同一条路径上有一个子目录/controller

我试图在init.py中导入文件/controller/file.py,如下所示:

1
2
import controller/file
import controller/file.py

它不起作用。如何在flask框架或python中轻松实现这一点?


首先,你要放在那里的文件叫做__init__.py。第二,除非你想要一些非常具体的行为,否则你通常应该把这些空的。

最后,看看这个文件夹结构

1
2
3
4
5
6
7
8
- __init__.py
- main.py
+ foo
  - __init__.py
  - foo_app.py
+ bar
  - __init__.py
  - bar_app.py

foo_app.py

1
import bar.bar_app

编辑:要使其工作,必须从父目录启动应用程序。


正如上面评论中提到的@davidim,您将以"与在其他任何地方导入相同的方式"导入文件。导入路径由点分隔,而不是斜线分隔。"

假设你有这样的文件结构

1
2
3
4
/Project
 --program.py
   /SubDirectory
    --TestModule.py

在这个例子中,我们假设TestModule.py的内容是:

1
2
def printfunction(x):
    print(x)

现在让我们首先开始,在您的program.py中,您需要import sys然后使用这一行代码将子目录添加到python的环境路径中。

1
2
import sys
sys.path.insert(0, os.getcwd()+"/SubDirectory")

现在可以正常导入模块。继续上面描述的文件结构,现在您可以像这样导入模块。

1
import TestModule

现在可以像正常一样从TestModule.py文件调用函数printfunction()

1
TestModule.printfunction("This is a test! That was successful!");

这将输出:

1
This is a test! That was successful!

总之,您的EDOCX1[1]文件应该如下所示:

1
2
3
4
import sys
sys.path.insert(0, os.getcwd()+"/SubDirectory")    
import TestModule
TestModule.printfunction("This is a test! That was successful!");