python项目目录管理

来源:互联网 发布:asp.net 微信支付源码 编辑:程序博客网 时间:2024/05/16 09:41

   最近碰到了一个头疼的关于项目import的问题,  由于是同一个人开发的项目, 目录结构很相似

A

----src

    --utils

----logs

----scripts


B

----src

    --utils

----logs

----scripts

上面是两个目录, 都具有相同的目录结构,  每个人在自己的项目里都这么使用 import utils.time_util.func, 

然后把自己项目的src目录加入PYTHONPATH,

 这样的结果就是你在不知不觉中使用了别的项目的package,  如果别人修改了time_util.func, 那么就会出现不可预料的结果.


想了一下解决办法大致有以下几个:

1. 将公用的一些utils单独建立项目, 每个项目需要使用的时候checkout.

优点: 只需要维护一份公共的通用utils

缺点: 还是无法解决需要单独定制的utils

2.将项目目录顶级的父目录加入PYTHONPATH, 比如上面加入的不是A/src, 而是A/../  

优点: 不会出现混乱

缺点: 每个都要如下使用  from A.src.utils.time_util import func,  导入路径太复杂.

3. 不使用PYTHONPATH, 项目文件都通过sys.path.append方式, 将项目的src目录加入, 然后再import包.

优点: 方便定制, 不会混乱

缺点:  多级目录sys.path.append不现实


目前还没想到有更好的方法, 还要去借鉴一下再继续更新.



update:

最近好像发现了一个virtualenv的东西可以实现这个 , 好好研究下

原创粉丝点击