Re: [問題] import 上層資料夾的module?
※ 引述《yungyuc (酷狗喵千代)》之銘言:
: ※ 引述《StubbornLin (Victor)》之銘言:
: 所以說你大概沒搞清楚 package 該怎麼用 :)
: PEP328 裡面講得很清楚。雖然它的焦點在 relative import,
: 不過讀通了就知道這個問題該怎麼解。
: 假設 hierachy 為
: project/
: `-- amazon
: |-- china
: |-- japan
: `-- sos
: 如果你不想修 sys.path,在 invoke script 的時候,你的 cwd 必須是 project。
我剛測試了一下翻了一下書,找了一下資料,它第一個找的directory似乎不是cwd
而是被invoke的script的所在目錄,這樣造成我一個很大的困擾
在不修改sys.path的前提下,任何想執行的script都得放在看得到想import的package
or module的那層裡面,這樣分層就失去意義
變成被強迫得把可執行的都放在最上層
對於被import的而言,他們都是去找top-level的檔案(被執行的那個)所在的目錄
但是被執行的卻非得在正確的目錄不可
我有很多檔案得執行,例如很多的unittest的檔案
在這種情況下,以上面的例子來看
不修改path的前提下,所有的test檔都得擠到project下
我可不想這麼做= =
除了test,所有想執行的檔案,也一樣得擠到project裡面
否則如果放在裡面層的資料夾,不管cwd是什麼
一執行都會告訴你找不到module
所以到頭來非得使用修改path的手法不可?
我看了一下Lib裡的程式,他們都直接import
例如sqlite3好了,雖然他的test是sqlite的一個sub package
不過他就直接寫 import sqlite3
因為他們是library,被執行肯定就是設好在path裡了
所以import sqlite3會在PYTHONPATH裡被找到
可是我的專案不是,我不想執行還非得找個固定的資料夾
然後把位置加到path裡
我想要我在哪裡執行都可以,所以非修改path不可?
--
VICTOR工作室 http://www.kinmen.info/vic/
程式設計教學 http://victorlin.serveftp.org/programming/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.64.132
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 8 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章