关于导入Python的错误

时间:2019-04-29 14:10:00

标签: python python-3.x python-import

我在导入和文件结构方面遇到一些问题。 我创建了在脚本组件中调用的自定义程序包。 我想使用“导入”“来自”,但是我的软件包不可用。

这是我的树结构:

|- __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'

您对我的错误有任何想法吗? 或对我使用的树结构的建议?

感谢您的反馈!

3 个答案:

答案 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)->选择“标记为目录为”->“源根目录”。 这样可以解决问题。