以下是我的公司“foo.com”使用的一些各种 Python 包:
com.foo.bar.web
com.foo.bar.lib
com.foo.zig.web
com.foo.zig.lib
com.foo.zig.lib.lib1
com.foo.zig.lib.lib2
这是将源存储在磁盘上的传统方法:
pysrc/
com/
foo/
bar/
web/
lib/
zig/
web/
lib/
lib1/
lib2/
PYTHONPATH=pysrc
但出于组织目的(不同的团队、不同的版本控制等),我们希望将它们存储如下:
bar/
pysrc/
com/
foo/
bar/
web/
lib/
zig/
pysrc/
com/
foo/
zig/
web/
lib/
lib1/
lib2/
PYTHONPATH=bar/pysrc:zig/pysrc
问题是:
第二种组织方法有什么问题吗?
例如,如果我们import com.foo
,Python会在哪里寻找__init__.py
?
符号链接这些目录有意义吗?例如。:
pysrc/
com/
foo/
bar/ -> symlink to /bar/pysrc/com/foo/
zig/ -> symlink to /zig/pysrc/com/foo/
欢迎任何一般代码组织建议。
Python 将按顺序遍历 sys.path(包括 PYTHONPATH 等),在每个路径中查找 com.foo 包。它找到的第一个名称空间将用于排除其他名称空间,这与 Perl 或 Java 不同,它们有效地将包名称空间合并在一起。有些事情你可以做__path__
改变了这种行为,但“首场比赛获胜”是 Python 开箱即用的行为方式。
只要将所有 com.foo.bar 完全保留在 bar/ 中并将所有 com.foo.zig 完全保留在 zig/ 中,第二种布局就不会有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)