您好,我在python(3.9)中有一个aws lambda项目,其结构如下:
*root -|
*lambda -|
_init_.py
A.py
*features -|
_init_.py
alexa.feature
B.py
*steps -|
_init_.py
alexa_steps.py
C.py
因此,我有以下建议: 用C.py
from importlib import import_module
A = import_module("lambda.A")
def testC():
return A.testA()
如果我运行C.py,它可以正常工作,但在alexa_steps.py中 我得到:
from importlib import import_module
@given('the user has opened the skill')
def step_impl(context):
A = import_module("lambda.A")b
A.testA()
在终端中,我进入lambda文件夹并执行:behave 测试失败,我得到:
USMCDANCN2Z76AB:mathquiz xzxqdy$ cd lambda
USMCDANCN2Z76AB:lambda xzxqdy$ behave
Exception ModuleNotFoundError: No module named 'lambda'
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/behave", line 8, in <module>
sys.exit(main())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/__main__.py", line 183, in main
return run_behave(config)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/__main__.py", line 127, in run_behave
failed = runner.run()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/runner.py", line 804, in run
return self.run_with_paths()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/runner.py", line 809, in run_with_paths
self.load_step_definitions()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/runner.py", line 796, in load_step_definitions
load_step_modules(step_paths)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/runner_util.py", line 412, in load_step_modules
exec_file(os.path.join(path, name), step_module_globals)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/behave/runner_util.py", line 386, in exec_file
exec(code, globals_, locals_)
File "features/steps/C.py", line 2, in <module>
A = import_module("lambda.A")
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'lambda'
提前谢谢你的帮助
如果必须保留名为} 并将包名作为字符串传递,以便python不会将其与关键字混淆
lambda
的包,它显然与匿名函数的python关键字冲突,因此必须使用^{我将一个名为“lambda”的包和一个名为“features”的包放在我的“site packages”文件夹中,其结构如下:
C.py
包含以下内容:现在,当我从控制台调用
from features.steps import C
时,它会输出:这是有关相对导入的最新文档:https://docs.python.org/3/reference/import.html#package-relative-imports
它们最早出现在2.5:https://docs.python.org/2/whatsnew/2.5.html#pep-328-absolute-and-relative-imports
相关问题 更多 >
编程相关推荐