找不到模块在命令行上运行

用户名

我有以下项目结构:

project/
    example/
        __init__.py
        foo.py
        boo.py
        meh.py
    tests/
        example/
            test_foo.py
            test_boo.py
            test_meh.py

作为例子,我进口foo.pyboo.py作为import example.foo as f我正在python3 -m pytest -s -v --cov tests根文件夹(项目)上运行测试单元测试运行得非常顺利,但是当我尝试运行单个文件时python3 example/boo.py出现错误:

ModuleNotFoundError: No module named 'example'
0 0

包中的模块不应真正运行(某些例外)。

但是,如果您确实需要,可以在运行模块之前设置PYTHONPATH。对于一个,使用例如

PYTHONPATH=$(pwd) python3 example/boo.py

一种替代方法是使用相对导入:from . import foo as finside boo.py但这仍然意味着不应真正运行模块。


详细说明:应该导入一个模块,而不是像脚本一样运行。那就是模块的目的。如果出于某种原因,您确实确实确实需要执行模块,则1 /重新考虑,2 /重写模块,3 /通过在模块内部调用必要的函数将脚本包装在模块周围(并保留模块脚本本身相对较短)。

请注意,setuptools通过入口点已经具有此功能

一个更简单的选择是使用适当的

if __name__ == '__main__':
    main()

在模块末尾的一行,其中main()调用了模块功能,然后使用Python-m开关执行该模块

python -m mypackage.mymodule

但是,再次尝试限制此功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章