我在导入和文件结构方面遇到一些问题。 我创建了在脚本组件中调用的自定义程序包。 我想使用“导入”“来自”,但是我的软件包不可用。
这是我的树结构:
|- __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'
您对我的错误有任何想法吗? 或对我使用的树结构的建议?
感谢您的反馈!
答案 0 :(得分:1)
几个问题: 1)您如何以及在哪里执行脚本? 2)您是将其作为模块执行还是作为独立脚本执行?
如果您以以下方式执行脚本:
python3 -m main
在最外面的目录中
仍然出现错误,请尝试以下操作:
1)在终端中,运行脚本之前输入以下内容:
export PYTHONPATH=$PYTHONPATH:path_to_your_project/project_name
2)然后运行:
python3 -m main
答案 1 :(得分:0)
您不能在其中导入模块。
这就是为什么它不起作用的原因,因为您试图从模块中的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
答案 2 :(得分:-2)
如果您使用的是pycharm, 请将以上代码以相同的结构放在一个文件夹名称中,例如:bdd_framework。在pycharm中打开项目,然后右键单击文件夹(bdd_framework)->选择“标记为目录为”->“源根目录”。 这样可以解决问题。