簡體   English   中英

使用別名的python包開發和相對導入

[英]python package developing and relative imports with alias

我正在開發一個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()

這很接近我想去的地方。 但是這樣做,我將失去為模塊設置別名的能力,甚至在某些情況下甚至都失去了設置名稱空間的機會(我一直試圖使用它來避免沖突)! 就我而言,每個文件夾中的模塊都具有相同的名稱,因此我需要該文件夾的名稱空間(anim,char,...)

有誰知道解決這個問題的更好方法? 是否可以使用別名進行相對導入?

任何幫助將不勝感激!

改用合適的版本控制軟件(如git或mercurial ...)怎么辦?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM