所以Python路径的行为是不同的PERL5LIB这使得它有点难以库划分为不同的回购协议。 让我描述它是如何工作的PERL:行为PYTHONPATH的VS PERL5LIB
如果目录结构如下:
项目/ lib目录/酒吧/ foo.pm
的common/lib /酒吧/ baz.pm
现在PERL5LIB被设置为 '项目/ lib目录下:common/lib目录' 在我的perl脚本
我可以这样做:
use bar::foo; # this comes from project/lib/bar/foo.pm
use bar::baz; # this comes from common/lib/bar/baz.pm
在Python虽然具有相同的目录结构(与.py文件代替),并添加相同的迪尔斯到PYTHONPATH(当然在项目/ lib目录/酒吧和common/lib目录/条迪尔斯添加虚__init__.py
):
import bar.foo # this successfully imports from project/lib/bar/foo.py
import bar.baz # this fails!
Python有没有办法解决这个问题,因为这会使分区代码变成一场噩梦。
编辑:更清晰一点,其中__init__.py
文件。
延伸阅读:http://stackoverflow.com/questions/3346482/pythonpath-hell-with-overlapping-package-structures – jathanism 2011-04-20 00:04:44
“这失败了!”这是什么意思?你会得到什么错误? – 2011-04-20 01:34:06
参见PEP 382:http://www.python.org/dev/peps/pep-0382/(这是正在审议的一项可能增加的Python 3.3) – ncoghlan 2011-04-20 03:11:17