编程语言
首页 > 编程语言> > 将Python源拆分为单独的目录?

将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