python项目目录管理

本文讨论了在同一开发者的不同项目间因相似目录结构导致的import冲突问题,并提出了三种解决方案:建立独立utils项目、调整PYTHONPATH及使用sys.path.append。此外,还提到了virtualenv作为一种可能的解决方案。

   最近碰到了一个头疼的关于项目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的东西可以实现这个 , 好好研究下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值