突然间我无法在Python中加载一些新升级的模块

时间:2017-12-03 11:53:57

标签: python anaconda

我突然无法加载新升级的模块模块,例如scikit-learn,zope,但我可以找到其他软件包。即使路径链接从导入点到正确的anaconda文件夹,其中包含所有代码。任何想法可能有什么问题以及如何解决它?

Python 2.7.13 |Anaconda custom (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
>>> import sklearn
>>> from os import listdir
>>> print(dir(sklearn))
['_ASSUME_FINITE', '__SKLEARN_SETUP__', '__all__', '__builtins__', '__check_build', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_contextmanager', 'base', 'clone', 'config_context', 'exceptions', 'externals', 'get_config', 'logger', 'logging', 'os', 're', 'set_config', 'setup_module', 'sys', 'utils', 'warnings']
>>> print(listdir(sklearn.__path__[0]))
['exceptions.py', 'cross_validation.pyc', 'lda.py', 'naive_bayes.pyc', 'isotonic.py', '_build_utils', 'neighbors', 'cluster', 'naive_bayes.py', '__init__.pyc', 'multiclass.py', 'dummy.pyc', 'grid_search.pyc', 'tests', '__init__.py', 'calibration.py', '_isotonic.so', 'neural_network', 'datasets', 'preprocessing', '__check_build', 'random_projection.py', 'multiclass.pyc', 'model_selection', 'calibration.pyc', 'pipeline.pyc', 'qda.py', 'learning_curve.py', 'ensemble', 'tree', 'isotonic.pyc', 'kernel_ridge.py', 'gaussian_process', 'decomposition', 'base.pyc', 'dummy.py', 'utils', 'pipeline.py', 'cross_decomposition', 'covariance', 'qda.pyc', 'multioutput.pyc', 'lda.pyc', 'feature_selection', 'linear_model', 'metrics', 'kernel_ridge.pyc', 'setup.py', 'semi_supervised', 'exceptions.pyc', 'multioutput.py', 'cross_validation.py', 'discriminant_analysis.py', 'kernel_approximation.pyc', 'base.py', 'random_projection.pyc', 'setup.pyc', 'kernel_approximation.py', 'grid_search.py', 'discriminant_analysis.pyc', 'mixture', 'manifold', 'externals', 'svm', 'feature_extraction', 'learning_curve.pyc']
>>> import zope
>>> print(dir(zope))
['__doc__', '__name__', '__path__']
>>> print(listdir(zope.__path__[0]))
['interface']
>>> zope.interface
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'interface'
>>> sklearn.lda
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'lda'

4 个答案:

答案 0 :(得分:6)

遗憾但是真实......你的错误是真实的......但也有以下警告信息。从现在开始使用sklearn.discriminant_analysis.LinearDiscriminantAnalysis。如何处理其他可能存在的错误也更新到我的答案。享受!

import warnings
from .discriminant_analysis import LinearDiscriminantAnalysis as _LDA

warnings.warn("lda.LDA has been moved to "
          "discriminant_analysis.LinearDiscriminantAnalysis "
          "in 0.17 and will be removed in 0.19", DeprecationWarning)

class LDA(_LDA):
    """
    Alias for
    :class:`sklearn.discriminant_analysis.LinearDiscriminantAnalysis`.

    .. deprecated:: 0.17
    This class will be removed in 0.19.
    Use
    :class:`sklearn.discriminant_analysis.LinearDiscriminantAnalysis`
    instead.
    """
    pass

在代码下面运行时没有错误:

import sklearn

from sklearn import discriminant_analysis
from os import listdir

print(dir(sklearn))

print(listdir(sklearn.__path__[0]))

print discriminant_analysis.LinearDiscriminantAnalysis()

摘录输出:

  

[Assume_FINITE&#39;,...]

     

[&#39; base.py&#39;,...]

     

LinearDiscriminantAnalysis(n_components = None,priors = None,shrinkage = None,                 solver =&#39; svd&#39;,store_covariance = False,tol = 0.0001)

因为看起来你的代码在某个地方出错了。你现在最好的选择是:

1 - 从文件夹../ site-packages中删除scikit-image,sklearn和zope文件夹;

2 - 删除 scikit_image-0.13.0-py2.7.egg-info,scikit_learn-0.19.1-py2.7.egg-info和zope installer文件夹的文件夹+内容  进入垃圾箱;

来自trashbin的

3 - delete个文件夹(防止链接到垃圾箱中的文件夹);

4-run pip install scikit-image / sklearn / zope with option --no-cache-dir;

5 Voila ...... 你再次获得了跑步滑雪,sklearn和zope。

享受!

答案 1 :(得分:2)

这不是你无法加载它们。如您所见,您已成功import,但未显示任何错误消息。
但是,似乎模块 zope sklearn 没有您尝试使用它们的属性。

尝试:

  

from zope.interface import Interface

sklearn 相同:

  

from sklearn import lda

我希望这会有所帮助。如果没有,请尝试重新安装软件包。


注意:您不能简单地使用pip install package,因为您还需要安装其他依赖项。以下是包含以下安装说明的页面:

  1. zope的: https://zope.readthedocs.io/en/latest/INSTALL-buildout.html

  2. sklearn: http://scikit-learn.org/stable/install.html

答案 2 :(得分:1)

您要呈现的属性错误是Python3的预期行为。您是否从Python 2升级到Python 3因为两个版本系列之间存在许多差异...请在此处阅读更多相关信息: https://docs.python.org/3/howto/pyporting.html

要加载sklearn.lda模块,您必须显式导入所需模块的一部分。

  来自sklearn import lda

  

导入sklearn.lda

我希望这能回答你的问题!

答案 3 :(得分:0)

将来解决此问题的有效方法是使用虚拟环境。它允许您在同一台计算机上运行不同版本的程序包。这意味着您可以升级新代码的包,但仍可以在同一台计算机上运行旧代码。

如果您使用的是Anaconda,则说明https://conda.io/docs/using/envs.html

如果你曾经使用cpython发行版virtualenvwrapper.readthedocs.io/en/latest/install.html是一个了不起的工具。

虽然它没有直接解决您的问题,但花费一个小时的时间来适应这种情况将在未来为您停止依赖性问题,从而为您节省大量时间。