我有一个问题。我有这样的目录设置:Python从父级的子文件夹导入
folder/
main.py
/stuff/
__init__.py
function.py
/items/
__init__.py
class.py
我的问题是如何将class.py导入到function.py?此设置非常具体,无法更改。为了实现这个目标,我需要做些什么?
我有一个问题。我有这样的目录设置:Python从父级的子文件夹导入
folder/
main.py
/stuff/
__init__.py
function.py
/items/
__init__.py
class.py
我的问题是如何将class.py导入到function.py?此设置非常具体,无法更改。为了实现这个目标,我需要做些什么?
只要应用程序通过main.py
启动,您的当前目录结构似乎是理想的。
Python将始终自动将主脚本的父目录添加到sys.path
(即您的示例中的folder
)的开头。这意味着当搜索不属于标准libarary的模块和程序包时,导入机器将优先给予该目录。
鉴于此,你可以导入classes.py
模块插入function.py
,就像这样:
from items import classes
(请注意,我已经改名为模块,因为class
是一个Python关键字)。
如果以后添加了另一个模块stuff
,并希望将其导入到functions.py
,你会怎么做:
from stuff import another
,如果子包加入items
,和你想导入模块从这一点,你会怎么做:在这种自上而下的方式指定
from items.subpackage import module
进口可以从在应用程序中的任何模块一起使用,因为他们总是RELAT主要脚本的父目录,它具有优先权。
将父文件夹添加到您的PYTHONPATH('sys.path.append(...)'),然后在'class.py'中简单地执行'from stuff init function'。这是一个解决方案... – tamasgal 2014-12-07 16:13:03
可能的重复http://stackoverflow.com/questions/72852/how-to-do-relative-imports-in-python – kdopen 2014-12-07 16:20:26
明确的重复http://stackoverflow.com/questions/27215912/import 27216343#27216343 – kdopen 2014-12-07 16:21:59