我在导入和文件结构方面遇到了一些问题。我已经创建了在我的脚本组件中调用的自定义包。我想使用“import”“from”但我的包裹不可用。
这是我的树形结构:
|- __init__.py
|- main.py
|- project/
|- __init__.py
|- components/
|- __init__.py
|- packages/
|- __init__.py
|- HERE MY PACKAGES pkg_insert_bdd.py
|- scripts
|- __init__.py
|- HERE MY SCRIPTS -> import pkg_insert_bdd
所有脚本都在main.py中执行但问题是当脚本执行时无法找到包。
# my_script in folder scripts
from project.components.packages.pkg_insert_bdd import Database
这段代码存在于我的脚本中。
这是Python返回的结果:
ModuleNotFoundError: No module named 'project'
你对我的错误有任何想法吗?或者我使用的树结构建议?
感谢您的反馈意见!
您无法在其中导入模块。
这就是为什么它不起作用,因为你试图从project
文件夹导入scripts
模块,该文件夹位于该模块内。
要解决此问题,您需要从scripts
模块移动project
文件夹并将其放在与main.py
相同的目录中,这样Python将成功导入模块。
更新:
如果要分别测试每个脚本,则必须在tests
旁边创建一个名为main.py
的模块。这个文件树应该是这样的:
|- __init__.py
|- main.py
|- tests
|- __init__.py
|- test_script1.py
|- test_script2.py
|- ....
|- scripts
|- __init__.py
|- script1.py
|- script2.py
|- ....
|- project/
|- __init__.py
|- components/
|- __init__.py
|- packages/
|- __init__.py
|- HERE MY PACKAGES pkg_insert_bdd.py
几个问题:1)你如何以及在哪里执行你的脚本? 2)您是将其作为模块还是作为独立脚本执行?
如果您正在执行脚本:
python3 -m main
在最外层的目录中
仍然出错,请尝试以下方法:
1)在终端中输入以下内容之前运行脚本:
export PYTHONPATH=$PYTHONPATH:path_to_your_project/project_name
2)然后运行:
python3 -m main
如果您使用pycharm,请将上述代码放在文件夹名称中的相同结构中,例如:bdd_framework。在pycharm中打开项目并右键单击该文件夹(bdd_framework) - >选择“标记为目录” - >“源根”。这将解决问题。