我有这样的文件夹结构:

application
├── app
│   └── folder
│       └── file.py
└── app2
    └── some_folder
        └── some_file.py

如何从file.py或some_file.py中导入函数?我尝试了:

from application.app.folder.file import func_name

但它不起作用。


当前回答

这里的答案不够清晰,这是在Python 3.6上测试的

使用此文件夹结构:

main.py
|
---- myfolder/myfile.py

其中myfile.py包含内容:

def myfunc():
    print('hello')

main.py中的import语句是:

from myfolder.myfile import myfunc
myfunc()

这将打印hello。

其他回答

这里的答案不够清晰,这是在Python 3.6上测试的

使用此文件夹结构:

main.py
|
---- myfolder/myfile.py

其中myfile.py包含内容:

def myfunc():
    print('hello')

main.py中的import语句是:

from myfolder.myfile import myfunc
myfunc()

这将打印hello。

只需使用os模块中的change-dir函数:

os.chdir("Here new director")

比正常情况下可以导入的更多信息

在linux上的python3中为我工作

import sys  
sys.path.append(pathToFolderContainingScripts)  
from scriptName import functionName #scriptName without .py extension  

如果从特定路径加载模块的目的是帮助您开发自定义模块,则可以在测试脚本的同一文件夹中创建指向自定义模块根目录的符号链接。对于在该文件夹中运行的任何脚本,此模块引用将优先于以相同名称安装的任何其他模块。

我在Linux上测试了这个,但它应该可以在任何支持符号链接的现代操作系统中运行。

这种方法的一个优点是,您可以指向位于您自己的本地SVC分支工作副本中的模块,这可以大大简化开发周期,并减少管理不同版本模块的故障模式。

所以我刚刚右键单击了我的IDE,并添加了一个新文件夹,我想知道为什么不能从中导入。后来我意识到我必须右键单击并创建一个Python包,而不是一个经典的文件系统文件夹。或者一种事后分析方法,添加__init__.py(这使得python将文件系统文件夹视为一个包),如其他答案中所述。在这里添加这个答案,以防有人走这条路。