道歉,如果确实有一个已经解决了这个问题的线程(我花了几个小时专心搜索了多个站点和GitHub,以寻找可能引起问题的依赖项),但是每种解决方案似乎都非常特定某某试图使用的库。

我一直在搞弄定量金融/算法交易,并一直试图导入特定的库ffn,但是,根据问题标题,我收到的冗长的错误消息详细说明了ImportError,以及如何据推测,我似乎缺少了某些非常具体的依赖项。坦白地说,这可能只是一个依赖关系接收(我缺少ffn依赖关系的依赖关系),但是我已尽力排除了这种可能性。

这是完整的错误:

ImportError                               Traceback (most recent call last)
    <ipython-input-2-01bc82d8cf41> in <module>()
      2 import numpy as np
      3 import pandas as pd
----> 4 import ffn
      5 import math

~\PycharmProjects\buff\venv\lib\site-packages\ffn\__init__.py in <module>()
----> 1 from . import core
      2 from . import data
      3
      4 from .data import get
      5 #from .core import year_frac, PerformanceStats, GroupStats, merge

~\PycharmProjects\buff\venv\lib\site-packages\ffn\core.py in <module>()
      8 from pandas.core.base import PandasObject
      9 from tabulate import tabulate
---> 10 import sklearn.manifold
     11 import sklearn.cluster
     12 import sklearn.covariance

~\PycharmProjects\buff\venv\lib\site-packages\sklearn\__init__.py in <module>()
    132 else:
    133     from . import __check_build
--> 134     from .base import clone
    135     __check_build  # avoid flakes unused variable error
    136

~\PycharmProjects\buff\venv\lib\site-packages\sklearn\base.py in <module>()
     11 from scipy import sparse
     12 from .externals import six
---> 13 from .utils.fixes import signature
     14 from . import __version__
     15

~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\__init__.py in <module>()
      9
     10 from .murmurhash import murmurhash3_32
---> 11 from .validation import (as_float_array,
     12                          assert_all_finite,
     13                          check_random_state, column_or_1d, check_array,

~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\validation.py in <module>()
     16
     17 from ..externals import six
---> 18 from ..utils.fixes import signature
     19 from .. import get_config as _get_config
     20 from ..exceptions import NonBLASDotWarning

~\PycharmProjects\buff\venv\lib\site-packages\sklearn\utils\fixes.py in <module>()
    142     from ._scipy_sparse_lsqr_backport import lsqr as sparse_lsqr
    143 else:
--> 144     from scipy.sparse.linalg import lsqr as sparse_lsqr  # noqa
    145
    146

~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\__init__.py in <module>()
    112 from __future__ import division, print_function, absolute_import
    113
--> 114 from .isolve import *
    115 from .dsolve import *
    116 from .interface import *

~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py in <module>()
      4
      5 #from info import __doc__
----> 6 from .iterative import *
      7 from .minres import minres
      8 from .lgmres import lgmres

~\PycharmProjects\buff\venv\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py in <module>()
      8 import numpy as np
      9
---> 10 from . import _iterative
     11
     12 from scipy.sparse.linalg.interface import LinearOperator

ImportError: DLL load failed: The specified module could not be found.


尽管我尝试通过“正常” Python 3文件运行相同的代码,但得到的是相同的消息,但该消息是来自Jupyter笔记本试用失败的IPython控制台(IPython控制台)。如前所述,我已经下载/正确安装了消息中提到的所有依赖项(sklearnscipy是错误提及的ffn之外的唯一问题子级)。最让我感到困惑的是,这些导入语句在ffn引用中的dependencies /中的所有内容都是应该且(据我所知)可以访问的。

也许我应该对此进行更彻底的研究,但是对我而言,真正有意义的唯一事情是我使用了这些库的错误版本(大多数情况下维护得很好并且经常进行了更新),并且某些功能ffn及其依赖项需求已被弃用,并且不再存在。但是,当我花30秒钟来弄清楚sklearn.manifold是否存在时,这一理论(至少部分地)没有得到证实,而且令我惊讶的是,它确实存在。我还检查了我的IDE的库管理器/解释器设置菜单,所有内容都是最新的(我正在使用PyCharm CE)。

简而言之:为什么当我似乎拥有要搜索的所有内容时/为什么收到此消息/它的确切含义,以及如何解决此问题以便可以使用我想使用的库?

如果这对您有帮助,请执行以下摘要:

所有库/依赖项都是最新的(PyCharm会维护每个库当前的版本,尽管我必须手动输入以告诉它执行更新)。

同样,我使用的是PyCharm CE 2018(最新版本)。

这是Jupyter笔记本中的整个单元格,会产生错误(这也恰好是笔记本中的所有内容):

from pylab import * import numpy as np import pandas as pd import ffn import math

这是产生相同错误(实际上是相同代码)的Python文档的所有内容:

import ffn import math import pandas as pd, numpy as np import datetime data1 = ffn.get('agg, hyg, spy, eem, efa', start='2018-01-01', end='2018-02-02') print(data1.head())

我正在运行Windows 10 64位

最佳答案

您的代码无法找到您的模块。在Jupyter笔记本中,您可以这样做。 'PYTHONPATH'是用于在python中定位自定义模块的环境变量。现在,您的模块位于项目目录中,因此您需要确保解释器可以找到您的文件。

基本上,您需要在Jupyter Notebook中设置路径以找到导入的用户定义模块。

“要在jupyter笔记本中设置env变量,只需使用“%”魔术命令,例如%env%set_env,例如%env MY_VAR=MY_VALUE%env MY_VAR MY_VALUE。(单独使用%env进行打印列出当前的环境变量。””

参见:How to set env variable in Jupyter notebook

10-08 08:10
查看更多