【问题标题】:Cannot import packages in sub modules无法在子模块中导入包
【发布时间】:2023-03-07 11:21:02
【问题描述】:

我有一个这样的项目结构:

project-root/
   source-root/
      sub-package/
         not_working.py
      working.py

如果我在working.py 中导入BaseEstimator

from sklearn.base import BaseEstimator

一切正常。

如果我在not_working.py 中做同样的事情,我会得到

Traceback (most recent call last):
  File "/home/user/project-root/source-root/sub-package/not_working.py", line 3, in <module>
    from sklearn.base import BaseEstimator
ImportError: No module named 'sklearn.base'; 'sklearn' is not a package

不知道是什么问题。我可以加载其他模块

这是 working.pynot_working.py - 两者的代码相同。

import re

import numpy as np
import pandas as pd

from sklearn.base import BaseEstimator
from sklearn.pipeline import Pipeline, FeatureUnion

我可以毫无问题地导入 numpy、pandas,但它不适用于 sklearn 包。


我已将解释器设置为本地 Python3.5 解释器

并且软件包似乎安装正确:

$ pip3 show sklearn
Name: sklearn
Version: 0.0
Summary: A set of python modules for machine learning and data mining
Home-page: https://pypi.python.org/pypi/scikit-learn/
Author: UNKNOWN
Author-email: UNKNOWN
License: None
Location: /usr/local/lib/python3.5/dist-packages
Requires: scikit-learn

【问题讨论】:

  • 请您发布这两个文件中的代码(以便我们进行健全检查)好吗?
  • @Splatmistro 我更新了我的问题 - 这两个文件只包含 import 语句并且是相同的。
  • 尝试在sub-package/目录中添加一个空文件__init__.py
  • @Splatmistro 就在那里。由 PyCharm 自动生成
  • 嗯很迷人

标签: python scikit-learn pycharm


【解决方案1】:

在我们的 convo 之后,not_working.py 被称为 sklearn.py,因此名称冲突意味着 sklearn 只是一个文件,而不是我们想要的包。


解决方案sklearn.py 重命名为其他名称,例如learner.py

【讨论】:

  • 谢谢,没想到是这个问题。
猜你喜欢
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2013-06-23
  • 2019-07-31
  • 2018-01-31
  • 2021-06-24
  • 2021-10-13
相关资源
最近更新 更多