[英]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.