问题描述
我在调用python脚本时收到此错误:
Traceback (most recent call last):
File "/path/t/file/file.py", line 61, in <module>
from sklearn.externals import joblib
File "/anaconda2/lib/python2.7/site-packages/sklearn/__init__.py", line 20, in <module>
import logging
File "/anaconda2/lib/python2.7/logging/__init__.py", line 26, in <module>
import sys, os, time, cStringIO, traceback, warnings, weakref, collections
File "/anaconda2/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
Failed to load file
如错误日志中所述,当我导入时会发生这种情况:
from sklearn.externals import joblib
笔记
注1:
单独调用import sklearn也会产生此错误.
笔记2:
在没有任何其他import语句的情况下运行,并且文件中的其余代码被注释掉也会产生错误
注3:
Objective-C代码通过Python C API(https://docs.python.org/2/c-api/index.html)调用此python文件.
这在具有完全相同规格和操作系统的另一台机器上完美运行(请参阅下面的详细信息).
注4:
如果我从终端调用Python然后从sklearn.externals导入joblib导入sklearn OR(没有从objective-C调用),则没有错误
注5:
我认为我没有安装任何虚拟环境.我试过在终端上调用pyenv,pyvenv和virtualenv.总是得到-bash:pyvenv:命令找不到
细节
我试过的两台机器都是MacBook Pro,运行Mac OS 10.13的规格相同. (代码适用于其中一个而另一个则失败)
我在代码失败的机器上尝试了这个:
我已经在(a)终端上的python CLI上的可执行文件AND(b)调用的脚本中添加了以下行:
print ">>>>>>>>>"+str(sys.executable)
print ">>>>>>>>>"+str(sys.version)
print "++++++++++++++++++++++++++++++++++++++++++++++++++++"
for p in sys.path:
print p
脚本输出失败:
>>>>>>>>>/anaconda2/bin/python
>>>>>>>>>2.7.10 (default, Feb 6 2017, 23:53:20)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]
++++++++++++++++++++++++++++++++++++++++++++++++++++
/anaconda2/lib/python27.zip
/anaconda2/lib/python2.7
/anaconda2/lib/python2.7/plat-darwin
/anaconda2/lib/python2.7/plat-mac
/anaconda2/lib/python2.7/plat-mac/lib-scriptpackages
/anaconda2/lib/python2.7/lib-tk
/anaconda2/lib/python2.7/lib-old
/anaconda2/lib/python2.7/lib-dynload
/anaconda2/lib/python2.7/site-packages
/anaconda2/lib/python2.7/site-packages/aeosa
~/Desktop/Test Software/Sources/*****/path/to/.py/file/*****/Classification
终端输出:
>>> sys.executable
'/anaconda2/bin/python'
>>> sys.version
'2.7.14 |Anaconda, Inc.| (default, Dec 7 2017, 11:07:58) \n[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]'
>>> for p in sys.path:
... print p
...
/anaconda2/lib/python27.zip
/anaconda2/lib/python2.7
/anaconda2/lib/python2.7/plat-darwin
/anaconda2/lib/python2.7/plat-mac
/anaconda2/lib/python2.7/plat-mac/lib-scriptpackages
/anaconda2/lib/python2.7/lib-tk
/anaconda2/lib/python2.7/lib-old
/anaconda2/lib/python2.7/lib-dynload
/anaconda2/lib/python2.7/site-packages
/anaconda2/lib/python2.7/site-packages/aeosa
基本上,获得相同的东西,除了版本,并且我(显然)也在搜索路径中看到.py文件的路径.
最佳答案 尝试卸载,然后重新安装您的包:
conda卸载scikit-learn