Python 导入未被识别

Posted

技术标签:

【中文标题】Python 导入未被识别【英文标题】:Python imports not being recognised 【发布时间】:2020-09-30 12:47:47 【问题描述】:

我一直在将我编写的函数集合放入应该更有条理的格式,以便在需要时可以导入它们,但看起来我的结构不正确,需要一些建议。

目前我有文件UsefulFunctions.py

在文件的顶部,我整理了导入语句,例如 import pandas as pd

在下面,我创建了单独的类来保存类似的功能。每个函数都是一个类中的静态方法,这里有一个摘录来解释这个问题:

UsefulFunctions.py

import pandas as pd

class Pandas_functions:

    @staticmethod
    def null_values(dataframe):
        """
        Returns a dataframe of the count of null and N/A values per column of
        the input dataframe
        
        Parameters:
        -----------
        dataframe: a pandas dataframe
        
        Returns:
        --------
        A pandas dataframe listing all column features and the sum of Null & Empty
        values per feature
        """

        a = dataframe.isnull().astype(int).sum()
        b = (dataframe=="").astype(int).sum()
        result = pd.DataFrame(data=[a,b], index=['Null','Empty']).T
        
        return result

当我在单独的笔记本中 import UsefulFunction 并尝试使用 UsefulFunctions.Pandas_functions.null_values(df) 时,我收到以下错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-30-7c232dd49b55> in <module>
----> 1 UsefulFunctions.Pandas_functions.null_values(df_docks)

~\Synoptic Project\UsefulFunctions.py in null_values(dataframe)
    190         --------
    191         A pandas dataframe listing all column features and the sum of Null & Empty
--> 192         values per feature
    193         """
    194 

NameError: name 'pd' is not defined

​

显然,pd 是在 UsefFunctions.py 中定义的,我已将它导入到我正在处理的笔记本中。所以,我不确定我在这里缺少什么才能使该功能正常工作。

谁能告诉我应该怎么做?

谢谢

【问题讨论】:

请发布完整的回溯,而不仅仅是最后一行。还要编辑您的代码以包含模块中存在的相关导入,以免混淆。您应提供minimal reproducible example。 程序开头写import pandas as pd 抱歉@buran,这是我发布的第一个问题。我已经对其进行了编辑以显示完整的回溯并使其更清晰。 @Dinesh,我已经在 UsefulFunctions.py 文件的顶部找到了 import pandas as pd,并且我正在将其导入到的笔记本中。我想我一定是错误地组织了我的代码结构? 很奇怪,回溯指向文档字符串中的一行,根本没有帮助。也许检查您的实际代码是否类似于import pandas as Pd 谢谢@buran,我查过了,不是。有趣的是,我把这个函数移到了课堂之外,它可以工作了!所以,一定与我组织代码的方式有关。 【参考方案1】:

您可能在文件开头缺少此语句

【讨论】:

对不起@Chandral,我第一次可能不够清楚,也许现在我重新编辑了它?我已经在每个 UsefulFunctions.py 文件和我要导入它的笔记本的顶部找到了import pandas as pd。所以,我不确定我需要对我的代码结构做些什么才能使其正常工作。 这真的很奇怪。究竟是什么作为 dataframe 的参数传递的? 我正在传递一个熊猫数据框。有趣的是,当我把课程和@statickmethod 拿出来时,它们都可以工作。我使用类来组织函数,但也许我应该将它们放在单独的文件中。这仍然是一个有趣的问题,很好解决! Traceback 显示 NameError 在您的文档字符串 in 函数 null_values 结束后立即发生。它应该发生在result = pd.DataFrame(data=[a,b], index=['Null','Empty']).T,您实际上是在函数中第一次使用pd。您可以尝试在函数中的文档字符串之前打印pd 吗?看看它是否在控制台中打印出类似&lt;module 'pandas' from '/usr/local/lib/python3.6/dist-packages/pandas/__init__.py'&gt; 的内容。这样我们就可以确保至少在UsefulFunctions.py 内不会发生 NameError。

以上是关于Python 导入未被识别的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中的 rxdart 使用未被识别

Intellij idea 无法识别 python 3 中本地类的导入 [重复]

pycharm不识别导入库怎么办

将 csv 文件导入 python 后,为啥我的某些数据列在我的数据框中无法识别

如何模拟在同一文件中定义但未被测试方法导入的函数?

Python调用阿里API进行车牌识别