如何在python项目中初始化系统的路径变量

时间:2012-03-07 04:33:10

标签: python variables path

项目中的

有很多目录,我希望每个.py文件在单独的目录中正确导入其他文件。

我试过了这个

PREFIX = normpath(dirname(dirname(dirname(abspath(__file__)))))
if PREFIX not in sys.path:
    sys.path = [PREFIX] + sys.path

当我想导入其他目录'variables时,我只导入此文件。但它可能过于冗长。

是否有更好的方法以更好的方式解决它(除了将项目的路径导出到全局系统的路径之外)?

2 个答案:

答案 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中的变量 (来自同一级别的任何其他子包)。