Python 运行本地脚本报找不到本地模块 ModuleNotFoundError 问题处理

一、问题

(myenv) ➜  test git:(feature-kaiwong) ✗ python test_kafka_producer.py
Traceback (most recent call last):
  File "test_kafka_producer.py", line 8, in <module>
    from common.kafka_cli import ProducerKafkaClient
ModuleNotFoundError: No module named 'common'

二、解决

因为pycharm默认使用解析器, 会导入该项目的所有包, 而cmd命令找不到该项目, 这个时候, 使用 sys.path.append("项目路径") 即可

import os
import sys

# 加载当前项目路径
sys.path.append(os.path.dirname(os.getcwd()))

from common.kafka_cli import ProducerKafkaClient
import json

config = {"bootstrap_servers": ["{}:{}".format('192.168.1.61', '9092')],
          "api_version": (2, 0, 1),
          }
client = ProducerKafkaClient(config)
data = json.dumps(
     {"model_path": "http://192.168.1.17:30101/minio/modelfile/2022-09-27/1664252842224.zip", "image_name": "creat-image-test",
      "image_version": "1.1.30", "model_version_id": "20220701"})

topic = 'goujian_image'
client.send(topic, value=bytes(data, encoding="utf8"), key=None)

示例:

# 当前文件的父目录的父目录的父目录
import os
import sys
# 当前路径: H:\testCase\test_v01\test_search\test_filmInfoList.py
# 添加路径: H:\testCase
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))

# 当前文件的父目录的父目录
import os
import sys
# 当前路径: H:\testCase\test_v01\test_search\test_filmInfoList.py
# 添加路径: H:\testCase\test_v01
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

路径函数:

os.path.dirname(__file__)   # 获取当前文件的绝对路径
os.path.dirname("path") # 获取当前文件的上级文件路径
sys.path.append()   # 路径加入变量
os.path.abspath(".")  # 当前执行文件的位置
os.path.abspath("../")    # 当前执行文件的上级位置
os.getcwd()   # 获取当前执行文件的路径
os.path.dirname(os.path)
os.path   # 当前模块的路径
sys.path[0]  # 当前文件的绝对路径
sys.path.append()   # 初始化路径

相关文章:
解决python导入本地文件报错ModuleNotFoundError: No module named ‘conf‘

为者常成,行者常至