作者StubbornLin (Victor)
看板Python
标题Re: [问题] import 上层资料夹的module?
时间Mon Feb 11 18:51:33 2008
※ 引述《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