Re: [問題] import 上層資料夾的module?

看板Python作者 (Victor)時間17年前 (2008/02/11 18:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/8 (看更多)
※ 引述《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
文章代碼(AID): #17i2Ytce (Python)
討論串 (同標題文章)
文章代碼(AID): #17i2Ytce (Python)