ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

将Python源拆分为单独的目录?

2019-05-26 22:45:52  阅读:214  来源: 互联网

标签:python import project-organization pythonpath


以下是我的公司“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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有