首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python :没有名为“hydra._internal.core_plugins”的模块

Python :没有名为“hydra._internal.core_plugins”的模块
EN

Stack Overflow用户
提问于 2022-11-03 16:48:21
回答 1查看 41关注 0票数 0

我有一个Python脚本(3.9.8),它在cli (在Win11上)中工作得很好。现在,我想使用我的python脚本并生成一个.exe。我用过一次水龙头,没有任何问题。现在,在转换之后,我确实从Hydra (1.2.0)获得了这个错误消息。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "src\main.py", line 19, in <module>
  File "hydra\main.py", line 90, in decorated_main
  File "hydra\_internal\utils.py", line 332, in _run_hydra
  File "hydra\_internal\utils.py", line 183, in create_automatic_config_search_path
  File "hydra\_internal\utils.py", line 196, in create_config_search_path
  File "hydra\core\plugins.py", line 46, in instance
  File "hydra\core\singleton.py", line 17, in instance
  File "hydra\core\singleton.py", line 13, in __call__
  File "hydra\core\plugins.py", line 54, in __init__
  File "hydra\core\plugins.py", line 58, in _initialize
  File "importlib\__init__.py", line 127, in import_module
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'hydra._internal.core_plugins'

这是我的项目结构

代码语言:javascript
运行
复制
src
│   main.py
│
├───conf
│   │   config.yaml
│   │   __init__.py
│   └───hydra
│       └───job_logging
│               logging.yaml
│
└───logs

我正在使用auto-py-to-exe模块。模块在一个env中,我包括到站点包的路径。我正在使用2.23.1版本的pyinstaller --noconfirm --onefile --console --paths "D:/Programmieren/Python/StorageRoom/.venv/Lib/site-packages" "D:/Programmieren/Python/StorageRoom/src/main.py"

这是我正在使用的代码,它会给我带来错误。

代码语言:javascript
运行
复制
from omegaconf import DictConfig
import traceback
import sys
import hydra
import logging


@hydra.main(version_base=None, config_path="../conf", config_name="config")
def main(cfg: DictConfig) -> None:
    log = logging.getLogger(__file__)
    log.info("This is a very nice print from the exe")


if __name__ == "__main__":
    try:
        main()
    except Exception:
        print(traceback.format_exc())
        sys.exit(-1)

config.yaml

代码语言:javascript
运行
复制
defaults:
  - override hydra/job_logging: logging
  - _self_

hydra:
  output_subdir: null  
  run:  
    dir: .

logging.yaml

代码语言:javascript
运行
复制
version: 1
formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  logFormatter: 
    format: '%(asctime)s | %(name)s | %(module)s-%(lineno)4s | %(levelname)-8s | %(message)s'
handlers:
  console:
    class: logging.StreamHandler
    formatter: simple
    stream: ext://sys.stdout
  file:                                                            
    class: logging.FileHandler                                     
    formatter: logFormatter                                              
    filename: logs/${hydra.job.name}.log     
root:
  handlers: [console, file]
  level: INFO

disable_existing_loggers: false

这是我的输出文件夹结构,这是我的项目结构

代码语言:javascript
运行
复制
output
│   main.exe
│
├───conf
│   │   config.yaml
│   │   __init__.py
│   └───hydra
│       └───job_logging
│               logging.yaml
│
└───logs
EN

回答 1

Stack Overflow用户

发布于 2022-11-05 03:44:44

我怀疑auto-py-to-exe中存在一个与Python的importlib.import_module函数不兼容的bug。

看看你发布的堆栈跟踪,我看到了File "hydra\core\plugins.py", line 58, in _initialize。看看line 58 hydra/core/plugins.py in the Hydra source repo,我看到有人打电话给importlib.import_module

auto-py-to-exe回购(https://github.com/brentvollebregt/auto-py-to-exe/issues/325)中似乎有一个悬而未决的问题,还有几个未解决的问题(如https://github.com/brentvollebregt/auto-py-to-exe/issues/177),这些问题都提到了importlib.import_module的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74306775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档