代码之家  ›  专栏  ›  技术社区  ›  Stacey

ModuleNotFoundError:没有名为的模块-但是该模块确实存在

  •  0
  • Stacey  · 技术社区  · 5 年前

    我继承了一些在与我不同的环境中构建的代码。

    但是,我知道我有所有的脚本需要这个正常运行。我假设我的环境设置有问题。

    [user@localhost mktdata.out]$ /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    /usr/local/lib/python3.6/site-packages/deap/tools/_hypervolume/pyhv.py:33: ImportWarning: Falling back to the python version of hypervolume module. Expect this to be very slow.
      "module. Expect this to be very slow.", ImportWarning)
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    

    除非发现 hypervolume/pyhv.py:33: ImportWarning:

    Traceback (most recent call last):
      File "strats/merlin.py", line 13, in <module>
      File "strats/merlin/tradeopt.py", line 11, in <module>
    ModuleNotFoundError: No module named 'merlin.tradelogic'
    

    merlin.py的开头如下所示:

    #!/usr/bin/env python3
    import argparse
    import logging
    import sys
    from datetime import datetime
    from merlin.cmdopt import (
            add_basic_opts,add_roll_opts,add_inst_opts,add_pair_opts,
            add_job_opts,add_list_of_opts
            )
    from merlin.mktdata import mktdataMain
    from merlin.instrument import instrumentMain
    from merlin.pair import pairMain
    from merlin.tradeopt import tradeoptMain
    from merlin.wrtconfig import wrtconfigMain
    from merlin.portfolio import portfolioMain
    from merlin.overview import overviewMain
    from merlin.var import *
    from dao.utils.functools import apply_func_seq
    

    从merlin.py调用的tradeopt的开头如下所示:

    import logging
    import os.path
    import lzma
    import pandas as pd
    import numpy as np
    import array
    import copy
    from deap import base,creator,tools
    from merlin.var import *
    from merlin.stratconfig import MerlinConfig
    from merlin.tradelogic import MerlinLogicPy
    from merlin.utils import (
            merge_paths,jobs_todo,sort_dict_by_roll,joblist_to_dict
            )
    from merlin.tradega import (
            trade_pars,SimSettings,is_valid_pars,evaluate_c,pnl_field_num,
            idx_total_pnl_pos_cost,cx_pars,mu_pars,idx_s1_trade
            )
    from dao.iotools.datamodel import *
    from dao.fin.stats import sharpe
    from dao.fin.algorithms import eaMuPlusLambda
    from dao.pair.pairid import PAIR_ID,split_pair2insts
    from dao.pair.spread import __pairSpread__
    from dao.utils.rw import (
            setup_dir,pickle_dump,pickle_load,find_folders,find_files
            )
    from dao.utils.roll import ROLL_ID
    
    logger=logging.getLogger(MERLIN_MAIN_LOGGER)
    
    def tradeoptMain(args):
    

    merlin.tradelogic

    但是当我看这个位置的时候 /home/user/merlin/bin/strats/merlin 我可以看到几个不同的 tradelogic

    他们是:

    tradelogic.cpp
    tradelogic.cpython-35m-darwin.so  
    tradelogic.pxd
    tradelogic.pyx
    

    中的第13行 /home/user/merlin/bin/strats/merlin.py 看起来像:

    from merlin.tradeopt import tradeoptMain
    

    第11行输入 /home/user/merlin/bin/strats/merlin/tradeopt.py 看起来像:

    from merlin.tradelogic import MerlinLogicPy
    

    贸易逻辑 MerlinLogicPy tradelogic.pyx 哪个在下面

    cimport cython
    from cython.view cimport array as cvarray
    import numpy as np
    cimport numpy as np
    
    cdef class MerlinLogicPy:
        def __cinit__(self,double entry,double exit,double stop_entry,
                double stop_loss,double norm_pos,unsigned int time_loss,
                bint ignore_reporting_corp)
            self.thisptr=new MerlinLogic(entry,exit,stop_entry,stop_loss,
                    norm_pos,time_loss,ignore_reporting_corp)
    

    我的 $PATH 看起来像:

    [user@localhost ~]$ echo $PATH
    /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/user/scoleman/bin:/home/scoleman/bin:/home/user/.local/bin:/home/user/bin:/home/user/condor/bin:/home/user/scoleman/bin:/home/scoleman/bin:/home/user/condor/bin:/home/user/merlin/bin
    

    /home/user/merlin/bin )包含所有代码。

    我也有 Cython 版本 0.29.5 贸易逻辑.pyx ? 如果是的话,有人能告诉我我是怎么做到的吗。

    我还看到我在运行Python3( #!/usr/bin/env python3 tradelogic.cpython-35m-darwin.so 文件看起来是使用3.5版编写的,这可能是/a问题吗?如何编译.so文件?

    0 回复  |  直到 4 年前
        1
  •  0
  •   Artur Spirin    5 年前

    /home/user/merlin/bin/strats/

    尝试将其添加到您的 PYTHONPATH

    如果项目根不是 蟒蛇

    下面是一个很好的解释它是如何工作的: How to use PYTHONPATH