将Python源拆分为单独的目录?
作者:互联网
以下是我的公司“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
问题是:
第二种组织方法有问题吗?
例如,如果我们导入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 /中,你就不应该对第二个布局有任何问题.
标签:python,import,project-organization,pythonpath 来源: https://codeday.me/bug/20190526/1158674.html