Windows Server 2008 R2部署Python3.6脚本提示No module named workers
解决Windows Server 2008 R2上Python导入Worker模块的错误
根据你描述的问题和文件夹结构,这个报错大概率是模块导入路径错误或者Python搜索路径配置问题导致的,下面是几个针对性的解决方案:
1. 修正导入语句的写法
你的Worker.py放在workers子目录下,直接写import Worker会让Python在当前目录(run.py所在的根目录)或者全局site-packages里找Worker.py,自然找不到。正确的导入方式应该是:
# run.py 第一行改成这个 from workers import Worker
如果你的Worker类在Worker.py里,这样就能正确从workers模块中导入它。
2. 确保Python能找到workers模块的路径
有时候部署环境下,执行脚本的当前工作目录不是run.py所在的根目录,导致Python无法识别同级的workers目录。可以在run.py的最开头添加以下代码,手动把脚本所在的根目录加入Python的搜索路径:
import sys import os # 获取当前脚本所在的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 将该目录添加到Python模块搜索路径 sys.path.append(script_dir)
3. 检查workers目录下的__init__.py
确保workers目录下的__init__.py文件是有效的(哪怕是空文件也可以,但必须存在),如果希望简化导入,可以在__init__.py里添加:
# workers/__init__.py from .Worker import Worker
这样后续导入时就可以直接用from workers import Worker,不需要写from workers.Worker import Worker。
4. 排查大小写问题(虽然Windows默认不区分,但偶尔会踩坑)
确认你的导入语句里的目录名、文件名大小写和实际文件系统一致:比如你的目录是workers(全小写),导入时不要写成Workers;文件是Worker.py,导入时不要写成worker。虽然Windows文件系统不区分大小写,但Python的模块导入逻辑在某些场景下会严格匹配大小写。
试完这些方案应该就能解决导入错误了。
内容的提问来源于stack exchange,提问作者NDZIE Patrick Joel
相关产品推荐
相关产品推荐

