最初我收到了这个错误(没有发现模块名称scipy)所以我安装了一个Scipy轮文件。现在我不再得到同样的错误,但我得到了cannot import name "_ccallback_c"
。
错误似乎是在第四行代码中触发的。我做了我的研究,看到其他人建议尝试像Anaconda这样的环境。我看到它在空闲时工作,这个解决方案对我来说并不理想。
追溯:
Traceback (most recent call last):
File "C:\Users\joesh\Desktop\Python\Machine Learning\1st tutorial.py", line 4, in <module>
from sklearn import preprocessing, cross_validation, svm
File "C:\Users\joesh\Desktop\Python\lib\site-packages\sklearn\__init__.py", line 134, in <module>
from .base import clone
File "C:\Users\joesh\Desktop\Python\lib\site-packages\sklearn\base.py", line 10, in <module>
from scipy import sparse
File "C:\Users\joesh\Desktop\Python\lib\site-packages\scipy\__init__.py", line 118, in <module>
from scipy._lib._ccallback import LowLevelCallable
File "C:\Users\joesh\Desktop\Python\lib\site-packages\scipy\_lib\_ccallback.py", line 1, in <module>
from . import _ccallback_c
ImportError: cannot import name '_ccallback_c'
代码:
import pandas as pd
import quandl, math
import numpy as np
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression
答案 0 :(得分:5)
我在 USING Anaconda上遇到了同样的错误,所以我不确定使用它会有什么不同。 我通过卸载scipy并使用pip重新安装它来解决它:
pip uninstall scipy
你会收到这条消息:
卸载scipy-1.1.0:将删除: C:\用户\什\应用程序数据\本地\程序\ python的\ python36-32 \ LIB \站点包\ SciPy的-1.1.0.dist-信息* C:\用户\什\应用程序数据\本地\程序\ python的\ python36-32 \ LIB \站点包\ SciPy的* 继续(是/否)?
按y
,完成点后,输入:
pip install scipy
答案 1 :(得分:1)
刚刚转到MSVS 2017进行Python(ML)开发,我遇到了这个以及与缺少模块相关的其他错误。问题(以及所有相关的问题)都有一个令人沮丧的简单解决方案:当我最初开始使用Python编码时,我从命令行安装了所有内容 - 显然,MSVS 2017并没有“看到”那些安装(事实上,它们有时会发生冲突,因为底层的python可能会攻击较旧的libs);所以,解决办法是:
使用'pip uninstall ...'的命令行版本,其中'...'是缺少依赖项的库(在本例中为scipy)。然后,在Python环境窗口的MSVS 2017命令行中(通常,在默认显示配置的右上角),重新加载库(在这种情况下,键入'scipy'将格式化命令行以执行[在下面的列表控件中]命令文本框])将读取类似'pip install scipy'(或任何需要为MSVS重新安装的库)。
对于许多(或所有)以前缺少模块错误的Python软件包安装,您可能必须这样做。
答案 2 :(得分:1)
可以通过在Anaconda Prompt上使用pip卸载并重新安装来解决:
pip uninstall scipy
卸载后,您可以使用以下方法重新安装:
pip install scipy
答案 3 :(得分:1)
我在遵循these instructions的过程中遇到了有关如何使用虚拟环境来使用SciPy的预构建版本的问题。对我来说,最简单的解决方案是在from . import _ccallback_c
下将scipy\_lib\_ccallback.py
注释掉。
答案 4 :(得分:0)
我首先得到了scipy的错误。所以我运行了命令python -m pip install -user numpy scipy matplotlib ipython jupyter pandas sympy nose
,它运行得很好。我用pip安装了所有东西,所以我决定使用Anaconda。我安装并检查添加到PATH。从那里,在正常停止工作之前执行的相同代码显示类似于问题的错误。我卸载了Anaconda,它现在又恢复了工作。
ERRO:
$ winpty python ia.py
Traceback (most recent call last):
File "ia.py", line 11, in <module>
from sklearn import tree #importando a biblioteca e a árvore p/ o classifica
dor
File "C:\Users\ferna\Anaconda3\lib\site-packages\sklearn\__init__.py", line 13
4, in <module>
from .base import clone
File "C:\Users\ferna\Anaconda3\lib\site-packages\sklearn\base.py", line 11, in
<module>
from scipy import sparse
File "C:\Users\ferna\AppData\Roaming\Python\Python36\site-packages\scipy\__ini
t__.py", line 118, in <module>
from scipy._lib._ccallback import LowLevelCallable
File "C:\Users\ferna\AppData\Roaming\Python\Python36\site-packages\scipy\_lib\
_ccallback.py", line 1, in <module>
from . import _ccallback_c
ImportError: cannot import name '_ccallback_c'
Código:
from sklearn import tree #importando a biblioteca e a árvore p/ o classificador
#COLLLECT TRAINING DATA
features = [[140,1],[130,1],[150,0],[170,0]]
labels = [0,0,1,1]
# TRAIN CLASSIFIER
clf = tree.DecisionTreeClassifier() #Classificador
clf = clf.fit(features, labels) #algoritmo de decisão p/ encontrar padrões
#MAKE PREDICTIONS
print(clf.predict([[160, 0]])) #entrada de dados para o tratamento
答案 5 :(得分:0)
在Python 3.6版中使用pip
安装scipy并在以后尝试使用Python 3.7运行代码时,会遇到此问题。因此,一种解决方案是卸载scipy
pip3 uninstall scipy
并重新安装(使用带有Python 3.7的环境):
pip3 install scipy
这将确保所安装的scipy版本与您的Python版本兼容。
PS:当您将Python从Python 3.6更新到Python 3.7时,可能还需要重新安装pip
,以便pip
将在内部使用正确的Python版本。
答案 6 :(得分:0)
尝试一下:
python -m pip install --upgrade scipy
答案 7 :(得分:0)
在深入研究之后,为了给出完整的背景知识,首先 SciPy 依赖于已经安装了 NumPy。 SciPy 轮的 setup.py
文件使用 NumPy 功能来配置和安装轮。
SciPy setup.py
:
...
if __name__ == '__main__':
from numpy.distutils.core import setup
setup(**configuration(top_path='').todict())
其次,当刚尝试使用轮子时,如果遇到此错误,您可以在检查轮子文件后看到原因是二进制轮子有共享对象文件的命名约定,这里称为{{ 1}},而是根据二进制轮支持的架构命名。当尝试通过 _ccallback_c.so
中的文件名导入共享对象时,它找不到它,因此出现此错误(/_lib/_ccallback.py
中的第 1 行),因为它没有被命名为 /_lib/_ccallback.py
,而是被称为 { {1}} 或其他架构变体:
_ccallback_c.so
这些文件名 seem to be an artifact of libraries that are using Cython 和 Cython 对 PEP 3149 的遵守(ABI 版本标记为 .so 文件)。但最简单的解决方法是将 .whl 扩展名更改为 .zip 并将所有相关的 .so 文件重命名为不包含架构片段。然后更改 .zip -> .whl 应该很好,除非它是您使用的平台的错误架构,在这种情况下,您需要为您的平台下载适当的平台轮。