将公共数据共享到多个Python文件

时间:2015-08-17 09:17:20

标签: python python-import

我有多个需要共享公共数据的Python文件。 例如,

Test1.py
Test2.py
Test3.py

每个测试文件必须使用相同类型的变量模式,

inputVariables = [
    inputVariableDef(
        name='srv_ip',
        description='IP address of the server',
        value="xx.xxx.xxx.xx",
    ),
    inputVariableDef(
        name='clnt_ip',
        description='IP address of the client',
        value="xx.xxx.xxx.xx",
    ),
    inputVariableDef(
        name='count',
        description='Loop Count',
        value=10,
    ),
]

我需要通过同一个客户端&服务器IP地址到value="xx.xxx.xxx.xx"的所有文件。为此,我使用了以下方法,

common.py:

server_ip = "xx.xxx.xxx.xx"
client_ip = "xx.xxx.xxx.xx"

并尝试通过在每个测试文件中导入common.py进行访问:

test1.py:

from root.projectA.windows.lib import common
value = common.server_ip

但有些我的应用程序无法识别导入的模块common并且未找到common.server_ip

有没有其他方法可以解决这个问题?

目录结构是这样的:

root -> projectA -> windows -> lib -> common.py

root -> projectA -> windows -> testfiles -> test1.py

1 个答案:

答案 0 :(得分:0)

您需要确保包含common,lib/的文件夹被声明为模块,并且其父文件位于路径上。

__init__.py目录中创建文件lib/。您的目录结构应如下所示:

projectA/windows -> lib -> common.py
                 |      +> __init__.py
                 |
                 +> testfiles -> test1.py

__init__.py文件可以为空。这只是告诉python lib目录是一个名为lib的模块。

然后,在test1.py中,您希望在开始时使用此代码:

#!/usr/bin/env python
import os
import sys
thisdir = os.path.abspath(os.path.dirname(__file__))
parentdir = "/".join(thisdir.split('/')[:-1])
sys.path.insert(0, parentdir)

from lib import common
value = common.server_ip

print "IP is %s" % value

它会将文件的父目录插入到系统路径中,让Python找到要导入的lib模块。请注意,此代码假定为Unix路径分隔符/ - 如果您在Windows上运行,则可能需要更改它。