码迷,mamicode.com
首页 > 编程语言 > 详细

Python的路径引用

时间:2014-10-17 13:40:01      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   os   ar   使用   strong   sp   div   

1、以HOME目录为准,进行跳转

sys.path.append(os.path.dirname(__file__) + os.sep + ‘../‘)

from config import swordfishconf
from utils  import log
from utils.mysql_base import MySQLBase

将程序的HOME目录添加到sys.path中,然后以此为准,进行跳转。
例子中对于封装的MySQLBase类访问是先访问utils包,然后从mysql_base.py中找到MySQLBase类

缺点:查看代码的时候当前脚本和包的关系不十分明了,需要调到HOME,然后再从HOME进行逐个查找

问题:如何直接看出当前脚本和包的关系,而不是经过HOME

2、使用absolute_path

配置PYTHONPATH:

export PYTHONPATH=/data1/guosong/opdir/20141017/test:$PYTHONPATH

代码示例:

.
|-- __init__.py
|-- lib
|   |-- __init__.py
|   |-- pack1
|   |   |-- __init__.py
|   |   |-- a.py
|   |   `-- aa.py
|   `-- pack2
|       |-- __init__.py
|       |-- b.py
|-- test.py

test.py的代码如下:

[root@typhoeus79 ice_test_m test]# more test.py
#!/usr/bin/env python2.7
#-*- coding:utf8 -*-

from __future__ import absolute_import

from lib.pack1.a import AObject

if __name__ == ‘__main__‘:
    AObject.printword()

从lib.pack1.a中引用类AObject,调用它的静态方法

a.py内容:

[root@typhoeus79 ice_test_m pack1]# more a.py
#!/usr/bin/env python2.7
#-* coding:utf8 -*-
from __future__ import absolute_import

#from .a import BObject
from ..pack2.b import BObject

class AObject(object):

    @classmethod
    def printword(self):
        b = BObject(‘a call b class‘)

a.py中又调用上一次目录pack2.b中的BObject

b.py内容为:

[root@typhoeus79 ice_test_m pack2]# more b.py
#!/usr/bin/env python2.7
#-* coding:utf8 -*-
#from __future__ import absolute_import

class BObject(object):
    def __init__(self,bstr):
        print "B:%s" % bstr

 

好处:不用再经过HOME,直接根据相对路径进行跳转

3、absolute_path介绍

 

4、使用absolute_path遇到的问题

4.1、ValueError: Attempted relative import in non-package


4.2、 ValueError: Attempted relative import beyond toplevel package


 

【参考资料】

1、http://blog.csdn.net/chinaren0001/article/details/7338041

Python的路径引用

标签:style   blog   http   os   ar   使用   strong   sp   div   

原文地址:http://www.cnblogs.com/gsblog/p/4030852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!