模块'scipy.special'在Python / SciPy中没有'expit'成员

时间:2018-07-23 21:31:46

标签: python python-3.x numpy scipy

我尝试使用SciPy的expit(x)。但我收到此错误消息:

  

模块'scipy.special'没有'expit'成员

这是我的代码:

import numpy
import scipy.special

[...]

def Activation(self, ActivationInput):
    self.ActivationOutput = scipy.special.expit(ActivationInput)
    return self.ActivationOutput
尝试在函数scipy中使用

Activation在VScode中用红色下划线标记

通过Error importing scipy.special.expit的解决方案不令人满意,并且不起作用。

我使用Python 3.7,NumPy 1.14.5和SciPy 1.1.0。

其他功能可以使用,但是scipy.special中的所有Ufunc都会收到此错误消息。

2 个答案:

答案 0 :(得分:0)

这似乎是像this one这样的Pylint问题。您是否尝试过执行代码?

作为解决方法,您可以尝试禁用no-member / E1101规则:

#pylint: disable=no-member
self.ActivationOutput = scipy.special.expit(ActivationInput)

答案 1 :(得分:0)

scipy.special中的所有ufunc都是用C编写的,因此pylint无法找到正确的定义。您可以通过在pylint中添加选项--ignored-modules=scipy.special来告诉pylint忽略该模块。

对于VSCode:

可以通过选项GUI或直接向settings.JSON文件添加--ignored-modules=scipy.special,但可以关闭VSCode与pylint一起使用的默认选项。

要解决此问题,可以将原始的默认选项以及--ignored-modules标志添加到settings.json文件中。

  • 键入[CTRL]+[Shift]+p以打开命令搜索
  • 搜索open settings (JSON),这将打开您的设置文件。
  • settings.JSON中添加键/值对,以便您的文件具有以下内容
{
    // any other options for VSCode

    "python.linting.pylintArgs": [
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned",
        "--enable=unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode",
        "--ignored-modules=scipy.special"
        ],
}

前三行是VSCode用于pylint的默认选项。第四行告诉pylint忽略scipy.special模块,这将关闭错误。