python框架环境配置

        在自动化框架开发和调试运行过程中,我们经常会碰到各种各样的包路径调用的问题,一会儿找不到包了,一会儿包下方找不到方法了,等等,很麻烦。
        python的包调用,其实有一个很简单的办法,是把你想要添加的路径添加到python解释器的包搜索路径下,而其搜索路径就在python根路径下方的site-packages目录下,我们可以把所有要添加的路径写到一个.pth为扩展名的文件下,并把所有该文件复制到site-packages路径下就可以了,不需要的时候,我们只要去site-packages路径下把.pth文件删除即可。这样做既方便了自己扩展包的调用,也不会污染本地python环境。
        以下代码就是实现的把当前框架下所有目录添加在“$PYTHON_HOME/lib/site-packages”路径下的一个.pth文件中的代码。这个代码的作用,在当我把我的python框架代码拷贝到任何一个python环境中的时候,在运行框架或者项目之前先运行一下这个代码,那么环境即可自动配置完毕。 框架或项目内的所有包之间的互相调用都可以准确运行。
        注意: 
因为我的框架是在windows下运行,所以这里是 写了一个bat文件把当前环境配置和框架启动调用写到一起了,所以,可以自主配置,无需分开操作。而因为windows和linux的目录结构不同,所以,代码并没有经过在linux下的测试,所以,linux编程系的小伙伴请注意,直接使用此代码可能会有问题。
        
此代码可以看作本地测试 框架的可移植性的一种尝试。现分享给大家,因代码和我的框架有关联,可能部分代码在大家使用过程中并不需要,大家可以自己尝试修改使用。更多的是想把这种想法分享给大家。代码仅供参考。
以下代码是2017/6/29日进行了一版优化,提高了通用性。
#coding=utf-8
import os
class pyPathConfig:
    """
    方法用于获取当前框架的所有包路径并返回给createPthFile方法
    方法中的walk()参数应该使用当前项目的根路径位置,可以指定绝对路径
    为方便使用,当前写入的是获取当前路径,那么可以将此文件直接放到当前项目的根目录下即可
    """
    def __catchAllPath(self):
        rootList=[]
        for root,dirs,files in os.walk(os.getcwd()):
            if root.endswith("__pycache__")==True:
                pass
            else:
                rootList.append(root.replace("\\","/"))
        return rootList
    """
    将包路径写到python/Lib/site-packages路径下的pth文件下,完成路径添加
    方法接受一个非必出传字符串参数,即待生成的pth文件名,如果不传,则默认传入userEnvPath
    """
    def createPthFile(self,pthFileName="userEnvPath"):
        targetPath=((os.path.dirname(os.__file__)).replace("\\","/")+"/site-packages/"+pthFileName+".pth")
        pthfile=open(targetPath,"w")
        pathList=self.__catchAllPath()
        for path in pathList:
            print(path)
            pthfile.write(path+"\n")
        pthfile.close()
        print("环境配置完毕!")
        
if __name__=="__main__":
    pathObject=pyPathConfig()
    pathObject.createPthFile()


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值