我有多个需要共享公共数据的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
答案 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上运行,则可能需要更改它。