有关导入Python的错误

问题描述 投票:1回答:3

我在导入和文件结构方面遇到了一些问题。我已经创建了在我的脚本组件中调用的自定义包。我想使用“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'

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

感谢您的反馈意见!

python python-3.x python-import
3个回答
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

1
投票

几个问题:1)你如何以及在哪里执行你的脚本? 2)您是将其作为模块还是作为独立脚本执行?

如果您正在执行脚本:

python3 -m main

在最外层的目录中

仍然出错,请尝试以下方法:

1)在终端中输入以下内容之前运行脚本:

export PYTHONPATH=$PYTHONPATH:path_to_your_project/project_name

2)然后运行:

python3 -m main

-2
投票

如果您使用pycharm,请将上述代码放在文件夹名称中的相同结构中,例如:bdd_framework。在pycharm中打开项目并右键单击该文件夹(bdd_framework) - >选择“标记为目录” - >“源根”。这将解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.