Python错误: 导入库: ModuleNotFoundError: 找不到模块名 ‘InitProject’

huangapple go评论105阅读模式
英文:

Python Error : Importing library : ModuleNotFoundError: No module named 'InitProject'

问题

以下是您提供的文本的翻译部分:

我正在使用RobotFramework建立一个Python项目,但即使我在init.resource中添加了一个Library条目,它仍然抛出“没有找到模块”的错误。此外,我在包含文件的文件夹中创建了一个空的__init__.py,以便Python文件可以被定位。

我的项目结构如下:

Python错误: 导入库: ModuleNotFoundError: 找不到模块名 ‘InitProject’

我的代码如下:

init.robot

  1. *** Settings ***
  2. Library MyLibrary.py
  3. Test Setup Setup
  4. Test Teardown Do Teardown

HelloVariable.robot

  1. *** Settings ***
  2. Resource init.resource
  3. *** Test Cases ***
  4. My First Robot Test
  5. Say Hello From Library
  6. Log To Console ${Data}

init.resource

  1. *** Settings ***
  2. Library test.py
  3. Library MyLibrary.py
  4. Library InitProject/ProtoFolder/ProtoService.py

MyLibrary.py

  1. # mylibrary.py
  2. from robot.api.deco import keyword
  3. from robot.libraries.BuiltIn import BuiltIn
  4. from robot.api import logger
  5. import json
  6. from InitProject.ProtoFolder.ProtoService import *
  7. class MyLibrary:
  8. def __init__(self):
  9. self.data = None
  10. @keyword("Setup")
  11. def setup(self):
  12. logger.console("Setting up test environment...")
  13. self.data = {"key1": "value1", "key2": "value2"}
  14. BuiltIn().set_test_variable("${Data}", self.data)
  15. with open('/InitProject/ProtoFolder/RobotFramework/test.json') as f:
  16. data = json.load(f)
  17. logger.console(data)
  18. @keyword("Do Teardown")
  19. def teardown_test_environment(self):
  20. logger.console("Tearing down test environment...")
  21. self.data = None
  22. ProtoService.proto_methods()

ProtoService.py

  1. from robot.api import logger
  2. from robot.api.deco import keyword
  3. from robot.libraries.BuiltIn import BuiltIn
  4. class ProtoService:
  5. def proto_methods(self):
  6. logger.console("Proto Method Called")

实际错误:

  1. er/RobotFramework/MyLibrary.py' failed: ModuleNotFoundError: No module named 'InitProject'
  2. Traceback (most recent call last):
  3. File "/Users/user/Python/pythonProject4/InitProject/ProtoFolder/RobotFramework/MyLibrary.py", line 7, in <module>
  4. from InitProject.ProtoFolder.ProtoService import *
  5. PYTHONPATH:

如果您有任何其他问题,或需要进一步的帮助,请随时告诉我。

英文:

I am setting up a python project using RobotFramework and it is throwing No module named error even if I have added a Library entry in init.resource.

Also, I created an empty init.py in the folder in which the file exists so that the python file can be located.

My project structure is as below:

Python错误: 导入库: ModuleNotFoundError: 找不到模块名 ‘InitProject’

My Code is as below:

init.robot

  1. *** Settings ***
  2. Library MyLibrary.py
  3. Test Setup Setup
  4. Test Teardown Do Teardown

HelloVariable.robot

  1. *** Settings ***
  2. Resource init.resource
  3. *** Test Cases ***
  4. My First Robot Test
  5. Say Hello From Library
  6. Log To Console ${Data}

init.resource

  1. *** Settings ***
  2. Library test.py
  3. Library MyLibrary.py
  4. Library InitProject/ProtoFolder/ProtoService.py

MyLibrary.py

  1. # mylibrary.py
  2. from robot.api.deco import keyword
  3. from robot.libraries.BuiltIn import BuiltIn
  4. from robot.api import logger
  5. import json
  6. from InitProject.ProtoFolder.ProtoService import *
  7. class MyLibrary:
  8. def __init__(self):
  9. self.data = None
  10. @keyword(&quot;Setup&quot;)
  11. def setup(self):
  12. logger.console(&quot;Setting up test environment...&quot;)
  13. self.data = {&quot;key1&quot;: &quot;value1&quot;, &quot;key2&quot;: &quot;value2&quot;}
  14. BuiltIn().set_test_variable(&quot;${Data}&quot;, self.data)
  15. with open(&#39;/InitProject/ProtoFolder/RobotFramework/test.json&#39;) as f:
  16. data = json.load(f)
  17. logger.console(data)
  18. @keyword(&quot;Do Teardown&quot;)
  19. def teardown_test_environment(self):
  20. logger.console(&quot;Tearing down test environment...&quot;)
  21. self.data = None
  22. ProtoService.proto_methods()

ProtoService.py

  1. from robot.api import logger
  2. from robot.api.deco import keyword
  3. from robot.libraries.BuiltIn import BuiltIn
  4. class ProtoService:
  5. def proto_methods(self):
  6. logger.console(&quot;Proto Method Called&quot;)

Actual Error:

  1. er/RobotFramework/MyLibrary.py&#39; failed: ModuleNotFoundError: No module named &#39;InitProject&#39;
  2. Traceback (most recent call last):
  3. File &quot;/Users/user/Python/pythonProject4/InitProject/ProtoFolder/RobotFramework/MyLibrary.py&quot;, line 7, in &lt;module&gt;
  4. from InitProject.ProtoFolder.ProtoService import *
  5. PYTHONPATH:

答案1

得分: 0

代码添加以下内容后可以运行,但我认为这不是一个干净的解决方案(或者是否有一种方法可以用内置变量替换 /Users/user/Python)。

  1. import sys
  2. sys.path.append('/Users/user/Python/pythonProject4/')
  3. from InitProject.ProtoFolder.ProtoService import ProtoService
英文:

The code works after I add following however, I don't think it's a clean solution (or if there is a way to replace /Users/user/Python with an in-built variable).

  1. import sys
  2. sys.path.append(&#39;/Users/user/Python/pythonProject4/&#39;)
  3. from InitProject.ProtoFolder.ProtoService import ProtoService

huangapple
  • 本文由 发表于 2023年2月18日 21:48:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/75493772.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定