python包开发和相对导入别名

时间:2016-10-24 11:44:58

标签: python namespaces package alias relative

我正在开发一个python包来处理我工作室的工作流程,我正在按工作区域组织我的项目。此外,由于这个包装不断增长和扩展,我有一个' dev'包裹和发布的'一。 我每次都有一些重要的新功能,并且我认为代码是稳定的,我会复制来自“开发”的文件。到' pub',让它们可供团队使用。 我喜欢这个系统,因为它可以保持事物的分离和代码的清洁。

我的项目结构如下:

/scripts_dir
  /dev
    __init__.py
    /anim
      __init__.py
      cls.py
    /char
      __init__.py
      cls.py
  /pub
    __init__.py
    /anim
      __init__.py
      cls.py
    /char
      __init__.py
      cls.py

请注意,scripts_dir没有init.py文件,因此它不属于该软件包。它只是一个容器文件夹。

我遇到的唯一问题是包装本身的进口。现在,每当我需要导入一个不在同一文件夹中的模块时,我需要指定完整路径。所以我被迫包括主包名称:

import dev.anim.cls as acl

这意味着每次我想发布我的代码时,我都要进入每个文件并将import语句更改为

import pub.anim.cls as acl

我已经看到在python 2.5+中可以以

的形式使用相对导入
from ..anim import cls

cls.someFunction()

这是gettin'非常接近我想去的地方。但是通过这样做,我失去了为模块设置别名的能力,在某些情况下甚至有机会设置命名空间(我总是尝试使用它来避免冲突)!在我的例子中,每个文件夹中的模块都具有相同的名称,因此我需要文件夹的命名空间(anim,char,...)

有谁知道处理这个问题的更好方法?是否可以使用别名进行相对导入?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如何使用正确的版本控制软件(如git或mercurial ......)呢?