【问题标题】:Python: "ImportError: DLL load failed: The specified module could not be found." Problems when importing ffn (finance library for python)Python:“ImportError:DLL 加载失败:找不到指定的模块。”导入ffn时的问题(python的财务库)
【发布时间】:2018-12-17 19:51:36
【问题描述】:

抱歉,如果确实存在已经解决此问题的线程(我花了几个小时仔细搜索多个站点和 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.

此特定消息来自失败的 Jupyter notebook 试用版(IPython 控制台),尽管我尝试通过“普通”Python 3 文件运行相同的代码,但得到相同的消息。正如我之前推断的那样,我已经下载/正确安装了消息中提到的所有依赖项(sklearn 和 scipy 是错误提到的 ffn 本身之外的唯一问题子项)。最让我困惑的是,这些 import 语句在依赖项/ffn 引用中的所有内容都是它们应该和(据我所知)可以访问的地方。

也许我应该对此进行更彻底的研究,但对我来说唯一真正有意义的是我使用了错误版本的这些库(大部分情况下,这些库维护良好并且经常更新)并且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 位

【问题讨论】:

  • 我看到你在~\PycharmProjects\buff\venv中使用了虚拟环境。你可以在你的终端通过source ~\PycharmProjects\buff\venv\bin\activate进入这个环境,看看你是否安装了所有的包(例如pip freeze)?
  • @AndrejKesely 所有库似乎都在虚拟环境中(当您通过其服务安装库时,PyCharm 会自动设置)

标签: python python-3.x python-import importerror finance


【解决方案1】:

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

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

“要在 jupyter notebook 中设置 env 变量,只需使用“%”魔法命令,%env 或 %set_env,例如 %env MY_VAR=MY_VALUE 或 %env MY_VAR MY_VALUE。(使用 %env by自己打印出当前的环境变量。)”

见:How to set env variable in Jupyter notebook

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2013-12-10
    • 2016-08-19
    • 2016-08-22
    • 2018-10-23
    相关资源
    最近更新 更多