如何在 bash 中导入包而不出现 ModuleNotFoundError

当我在 .sh 文件中运行 python 文件时,出现错误“ModuleNotFoundError”。


首先这是目录结构。


- my_project/

--- common_lib/

----- __init__.py

----- my_module.py

--- dir_1/

----- test.py

----- test.sh

这是每个文件的内容。


common_lib/初始化.py


def test_func():

    print(1)

common_lib/my_module.py


def module_func():

    print("This is module.")

dir_1/test.py


import common_lib as cl


cl.test_func()

dir_1/test.sh


#!/usr/bin/env bash


python test.py

当我使用“vs code”或“pycharm”等编辑器直接运行test.py文件时,我得到了正确的结果“1”。但是当我运行 test.sh 文件时,出现以下错误。


ModuleNotFoundError:没有名为“common_lib”的模块


在这种情况下,如何导入 python 包而不出现“无模块错误”?


有只小跳蛙
浏览 118回答 1
1回答

阿晨1998

将(空)__init__.py放入包根目录以及所有子目录中。然后您可以将脚本作为模块调用dir_1:.├── __init__.py├── common_lib│   └── __init__.py└── dir_1    ├── __init__.py    ├── test.py    └── test.shtest.sh:#!/usr/bin/env bashcd .. && python -m dir_1.test输出:./test.sh1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python