关注学习了解更多的Cygwin、Linux、Python等技术。 Python程序代码中经常需要import语句,从而调用已有的函数、方法等,但在多目录、多文件的项目程序 ... ... <看更多>
「python import上層目錄」的推薦目錄:
python import上層目錄 在 Re: [問題] import 上層資料夾的module? - python | PTT數位生活 的推薦與評價
看板 Python ... testmod.py'> : : 你想要的relative import 去年(還是前年?) ... 我有使用package,可是他抓不到上層的pageage阿: 上面一層是amazon : from amazon. ... <看更多>
python import上層目錄 在 Re: [問題] import 上層資料夾的module? - 看板Python - 批踢踢 ... 的推薦與評價
借用一下這個標題
我把原作者的架構延伸成下圖
(綠色代表可執行)
Outside/
|- run_more_outside.py
|
`- Project/
|- __init__.py
|- run_outside.py
|
`- Amazon/
|- __init__.py
|- main.py
|- GlobalFunc.py
|
|- Japan/
| |- __init__.py
| `- JapanShow.py
|
`- TemplateFunc/
|- __init__.py
`- TemplateShow.py
假設 JapanShow.py 是提供外部使用的函式
本身會用到上層的 GlobalFunc.py
及 TemplateFunc/TemplateShow.py
我試了一些不同的可能,並找到一個可行的做法
可是我並不是很喜歡這樣的程式寫法
想請問板友們有沒有漂亮的做法
底下是我試出來的結果
#--- JapanShow.py ---
主要修改藍色部分
if __name__ == '__main__':
import sys
sys.path.insert(0, '..')
try:
from .. import GlobalFunc
from ..TemplateFunc import TemplateShow
except ValueError:
import GlobalFunc
from TemplateFunc import TemplateShow
def Show(mess): # API
TemplateShow.Show("Japan", mess, GlobalFunc.Mark())
if __name__ == '__main__':
Show('Japan')
#--- GlobalFunc.py ---
def Mark():
return '(Global)'
#--- TemplateShow.py ---
def Show(name, mess, mark):
print '[%s] %s %s' % (name, mess, mark)
#--- main.py ---
from Japan import JapanShow
JapanShow.Show('main')
#--- run_outside.py ---
from Amazon.Japan import JapanShow
JapanShow.Show("outside")
#--- run_more_outside.py ---
from Project.Amazon.Japan import JapanShow
JapanShow.Show("more_outside")
底下是各個檔案的執行結果:
JapanShow.py: [Japan] Japan (Global)
main.py: [Japan] main (Global)
run_outside.py: [Japan] outside (Global)
run_more_outside.py: [Japan] more_outside (Global)
以上是所有程式的內容
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.181.65
... <看更多>