You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入ProofOfConcept_1类遇ModuleNotFoundError,求正确导入方法

解决Python模块导入错误:ModuleNotFoundError: No module named 'multiprocessingTests'

问题详情

运行start.py时触发如下错误:

PS M:\projects\python\flask apps\openRoutService\apps\app5\app5-test> & C:/Python310/python.exe "m:/projects/python/flask apps/openRoutService/apps/app5/app5-test/multiprocessingTests/PoolExexOnPoolExecConcept/start.py"
Traceback (most recent call last):
  File "m:\projects\python\flask apps\openRoutService\apps\app5\app5-test\multiprocessingTests\PoolExexOnPoolExecConcept\start.py", line 1, in <module>
    from multiprocessingTests.PoolExexOnPoolExecConcept.ProofOfConcept_1 import ProofOfConcept_1
ModuleNotFoundError: No module named 'multiprocessingTests'

相关代码

start.py

from multiprocessingTests.PoolExexOnPoolExecConcept.ProofOfConcept_1 import ProofOfConcept_1

if __name__ == '__main__':
    ProofOfConcept_1.parallel()

ProofOfConcept_1.py

import time
import logging
import logging.config
import configparser
from multiprocessingTests.PoolExexOnPoolExecConcept.TreatmentPoolExec import TreatmentPoolExec
from multiprocessingTests.PoolExexOnPoolExecConcept.BufferPoolExec import BufferPoolExec
from utils.PoolUtils import PoolUtils
from Multiprocessing.KeyAndNoneKeyGridCells.pool.GridCellsProfiles.VarTasksDispatcher import VarTasksDispatcher
logging.basicConfig(level=logging.DEBUG)
logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': True,
})
config = configparser.ConfigParser()
config.read('configs.ini')
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

class ProofOfConcept_1(object):
    
    @staticmethod
    def parallel():        
        strtTime = time.time()
        
        processesCount, procsRem = PoolUtils.getProcessesCountPerPool(numOfPools=2,processesCount=int(config['MULTIPROCESSING']['processes_count']))
        cpuCount, cpuRem = PoolUtils.getCpuCountPerPool(numOfPools=2,cpuCount=int(config['MULTIPROCESSING']['cpu_count']))
        calcETRRiskInTreatmentForResourcesPoolExec = TreatmentPoolExec(processCount=processesCount+procsRem,cpuCount=cpuCount+cpuRem)
        calcETRRiskInTreatmentForResourcesPoolExec.setIterables([0])
        calcETRRiskInBufferForResourcesPoolExec = BufferPoolExec(processCount=processesCount,cpuCount=cpuCount)
        calcETRRiskInBufferForResourcesPoolExec.setIterables([0])
        calcETRRiskPoolExecList = []
        calcETRRiskPoolExecList.append(calcETRRiskInTreatmentForResourcesPoolExec)
        calcETRRiskPoolExecList.append(calcETRRiskInBufferForResourcesPoolExec)
        varTasksDispatcher = VarTasksDispatcher()
        '''no results to be sent back'''
        res = varTasksDispatcher.dispatch(calcETRRiskPoolExecList)

路径结构

app5-test/
├── multiprocessingTests/
│   └── PoolExexOnPoolExecConcept/
│       ├── start.py
│       ├── ProofOfConcept_1.py
│       ├── TreatmentPoolExec.py
│       ├── BufferPoolExec.py
├── utils/
│   └── PoolUtils.py
├── Multiprocessing/
│   └── KeyAndNoneKeyGridCells/
│       └── pool/
│           └── GridCellsProfiles/
│               └── VarTasksDispatcher.py
└── configs.ini

解决方案

方法1:使用同目录直接导入

start.py和ProofOfConcept_1.py在同一目录,修改导入语句为:

# start.py
from ProofOfConcept_1 import ProofOfConcept_1

同时修改ProofOfConcept_1.py里的同目录导入:

# ProofOfConcept_1.py
from TreatmentPoolExec import TreatmentPoolExec
from BufferPoolExec import BufferPoolExec

方法2:将项目根目录加入Python搜索路径

在start.py开头添加代码,把app5-test目录加入sys.path:

import sys
import os
# 获取当前文件所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 向上回溯3级,定位到app5-test目录
project_root = os.path.abspath(os.path.join(current_dir, '../../..'))
sys.path.append(project_root)

# 之后可正常使用原绝对导入语句
from multiprocessingTests.PoolExexOnPoolExecConcept.ProofOfConcept_1 import ProofOfConcept_1

方法3:切换工作目录后运行脚本

打开终端,切换到app5-test目录再执行脚本:

cd "M:\projects\python\flask apps\openRoutService\apps\app5\app5-test"
python multiprocessingTests/PoolExexOnPoolExecConcept/start.py

Python会自动将当前工作目录加入模块搜索路径,所有绝对导入可正常生效。

方法4:标记目录为Python包

在所有需要作为模块的目录下创建空的__init__.py文件,包括:

  • multiprocessingTests/
  • multiprocessingTests/PoolExexOnPoolExecConcept/
  • utils/
  • Multiprocessing/及其所有子目录

之后搭配方法2或方法3运行脚本即可。

内容的提问来源于stack exchange,提问作者Amrmsmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:20:36