2
我有一个简单的Python包目录结构如下:Python模块,引用同一包中的其他模块?
wibble
|
|-----foo
| |----ping.py
|
|-----bar
| |----pong.py
简单的问题:我将如何引用ping.py
函数/类从pong.py
?仔细查看文档,这看起来就像在wibble
,foo
和bar
的根目录中创建__init__.py
文件一样简单,然后从pong.py
开始执行类似from wibble.foo.ping import important_function
的操作。然而,尝试这导致No module named wibble.foo.ping
。
我确定我错过了某处文档中的某些东西,因为这一定是可以做到的。我对module
和namespace
之间的区别也有点朦胧,我的背景是c#.net,所以这里的任何类比都会有用。
在Windows上,所以这将是'PATH =%PATH%; c:\ path \ to \ wibble'(只是因为c#.net引用而猜测) – alan 2012-04-24 19:56:33
我应该说 - 这是在* nix上开发的。我对这个解决方案的担忧是,它将包的绝对位置与代码库/基础结构联系起来很困难。鉴于这些文件相对于对方而言很容易定位,为什么'pong'不知道它在'wibble'包中,然后通过这种方式找到'ping'? – growse 2012-04-24 19:58:09
你可以大致猜测pong.py文件的位置,并将wibble文件夹添加到python路径中,但是如果你使用setup.py这样的代码包,代码会很麻烦,但是这里的问题是错误的做法 – diegueus9 2012-04-24 19:59:59