有很多目录,我希望每个.py
文件在单独的目录中正确导入其他文件。
我试过了这个
PREFIX = normpath(dirname(dirname(dirname(abspath(__file__)))))
if PREFIX not in sys.path:
sys.path = [PREFIX] + sys.path
当我想导入其他目录'variables
时,我只导入此文件。但它可能过于冗长。
是否有更好的方法以更好的方式解决它(除了将项目的路径导出到全局系统的路径之外)?
答案 0 :(得分:0)
你可以使用python模块并导入它们:
import MyModule.MySubModule.myclass
例如:
from pixie.libs.setup import Setup
文件夹是:
/
|-pixie
|- __init__.py
|- libs
|- __init__.py
|- setup.py
|- models
赞:https://github.com/masom/Puck/blob/master/client/pixie/controllers/configuration.py#L2
答案 1 :(得分:0)
import
statement包括对packages
的支持 - 在__init__.py
个标记的目录中排列的文件(模块)。
提供对相对包层次结构的支持(使用前导点), 所以绝对模块参考不是必需的。
指定要导入的模块时,不必指定模块的绝对名称。当模块或包包含在另一个包中时,可以在同一顶层包中进行相对导入,而不必提及包名。 通过在指定的模块或包中使用前导点,您可以指定在不指定确切名称的情况下遍历当前包层次结构的高度。一个前导点表示存在导入模块的当前包。两个点表示一个包级别。三个点是两个级别,等等。因此,如果您从pkg包中的模块执行
中from . import mod
,那么您将最终导入pkg.mod。如果从pkg.subpkg1中执行from ..subpkg2 import mod
,则将导入pkg.subpkg2.mod。相对导入的规范包含在PEP 328。
您可以将项目安排为子包,并使用类似的相对导入
from ..subpkg2 import mod
使用mod
subpkg2
中的变量
(来自同一级别的任何其他子包)。