如何组织一个python模块,使脚本可以作为主程序运行?

2024-09-19 23:27:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python启动一个项目,代码结构如下:

project/
        __init__.py
        a.py
        b.py
        mainA.py
        utilities/
                   __init__.py
                   mainB.py
                   c.py

__init__文件都是空白的。在

我想把utilities/mainB.py作为一个程序运行(使用python main.py),mainB需要导入a.py和{}。所以我尝试了from .. import a和其他一些方法,但是{}失败了。错误信息是:

ValueError: Attempted relative import in non-package

所以问题来了:

  1. 如何修复mainB.py以便它可以作为主程序运行?在
  2. mainA.py现在可以作为主程序运行了,它还导入了a.py和{}(使用import a和{})。 我认为代码结构可能会变得更复杂。例如,如果mainA.py必须从project/some/directory导入一个模块,我该怎么做?在

Tags: 文件项目代码frompyimportproject程序运行
3条回答

您应该在PYTHON_PATH中添加“project”dir,然后在主营业务伙伴公司名称:

from project import a

this previous question。你有两个选择。一种方法是使用PEP 366中描述的__package__属性来设置模块的相对名称。另一种方法是将脚本作为模块执行(对解释器使用-m标志),而不是直接作为脚本运行它们。在

{1>你可以使用内置的Python模块。在

python -m project.utilities.mainB

这允许您将mainB作为包的一部分正常编写,因此相对导入和绝对导入都可以正常工作。在

有关此功能的深入讨论,请参见PEP-338。在

相关问题 更多 >