Не удалось импортировать модуль, найденный в кэше

#python #anaconda #fenics

#python #anaconda #феникс

Вопрос:

У меня возникла проблема с кодом, который я запускаю, который использует библиотеку под названием fenics. На одной машине он работает нормально, но на другой мы получаем следующую ошибку:

Я понятия не имею, как попытаться решить эту проблему, и ищу советы относительно того, что здесь может пойти не так.

 --- Instant: compiling ---
INFO:instant:--- Instant: compiling ---
In instant.import_module_directly: Failed to import module 'dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9' from '/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
ImportError:/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9/_dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.so: undefined symbol: _ZN6dolfin10Expression12set_propertyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd;
WARNING:instant:In instant.import_module_directly: Failed to import module 'dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9' from '/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
ImportError:/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9/_dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.so: undefined symbol: _ZN6dolfin10Expression12set_propertyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd;
Failed to import module found in cache. Modulename: 'dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
Path: '/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
ImportError:/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9/_dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.so: undefined symbol: _ZN6dolfin10Expression12set_propertyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd;
ERROR:instant:Failed to import module found in cache. Modulename: 'dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
Path: '/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
ImportError:/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9/_dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.so: undefined symbol: _ZN6dolfin10Expression12set_propertyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd;
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
~/Minimal_Magnetic_Sims/ChrisExperiment_gmsh/Calc_Magnetic_Potential.py in <module>()
     79 print('calculating U', flush=True)
     80 
---> 81 U = calc_U(params_arr, mesh, bc_markers)
     82 
     83 print('done')

~/Minimal_Magnetic_Sims/ChrisExperiment_gmsh/Calc_Magnetic_Potential.py in calc_U(params, mesh, bc_markers)
     38     M = [m*sin(theta)*cos(phi), m*sin(theta)*sin(phi), m*cos(theta)]  # Magnetic Moment
     39     vmag = [mag*sin(theta)*cos(phi), mag*sin(theta)*sin(phi), mag*cos(theta)]
---> 40     U = MagPotential(mesh,vmag,X,V,r,mu,bc_markers)
     41     print('Done for {}'.format(X), flush=True)
     42     return U

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/dolfin/functions/expression.py in __new__(cls, cppcode, *args, **kwargs)
    677                                                 [generic_function_members],
    678                                                 [mesh_function_members],
--> 679                                                 mpi_comm=kwargs.get("mpi_comm"))
    680         cpp_base, members = cpp_base[0], members[0]
    681 

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/dolfin/compilemodules/expressions.py in compile_expressions(cppargs, generic_function_members, mesh_function_members, mpi_comm)
    264         "nn".join(code_snippets), classnames,
    265         additional_declarations="n".join(additional_declarations),
--> 266         mpi_comm=mpi_comm)
    267 
    268     return expression_classes, all_members

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/dolfin/compilemodules/expressions.py in compile_expression_code(code, classnames, module_name, additional_declarations, mpi_comm)
    181     compiled_module = compile_extension_module(
    182         code, additional_declarations=additional_declarations,
--> 183         mpi_comm=mpi_comm)
    184 
    185     # Get the compiled class

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/dolfin/compilemodules/jit.py in mpi_jit(*args, **kwargs)
     68         # Just call JIT compiler when running in serial
     69         if MPI.size(mpi_comm) == 1:
---> 70             return local_jit(*args, **kwargs)
     71 
     72         # Default status (0 == ok, 1 == fail)

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/dolfin/compilemodules/compilemodule.py in compile_extension_module(code, module_name, additional_declarations, additional_system_headers, mpi_comm, **instant_kwargs)
    601             code=code,
    602             additional_declarations=additional_declarations,
--> 603             **instant_kwargs)
    604 
    605     sys.stdout.flush()

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/instant/build.py in build_module(modulename, source_directory, code, init_code, additional_definitions, additional_declarations, sources, wrap_headers, local_headers, system_headers, include_dirs, library_dirs, libraries, swigargs, swig_include_dirs, cppargs, lddargs, object_files, arrays, generate_interface, generate_setup, cmake_packages, signature, cache_dir)
    584 
    585         # Import module and place in memory cache
--> 586         module = import_and_cache_module(module_path, modulename, moduleids)
    587 
    588         if not module:

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/instant/cache.py in import_and_cache_module(path, modulename, moduleids)
     90     module, e = import_module_directly(path, modulename)
     91     instant_assert(module is not None, "Failed to import module found in cache. Modulename: '%s';nPath: '%s';n%s:%s;" % (modulename, path, type(e).__name__,
---> 92                                                                                                                            e))
     93     for moduleid in moduleids:
     94         place_module_in_memory_cache(moduleid, module)

/scratch/ajs3g11/conda_envs/fenicsproject/lib/python3.6/site-packages/instant/output.py in instant_assert(condition, *message)
    101         _log.error(*message)
    102         text = message[0] % message[1:]
--> 103         raise AssertionError(text)
    104 
    105 

AssertionError: Failed to import module found in cache. Modulename: 'dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
Path: '/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9';
  

ImportError:/scratch/ajs3g11/conda_envs/fenicsproject/.cache/instant/cache/dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9/_dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.so: undefined symbol: _ZN6dolfin10Expression12set_propertyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd;

Когда я проверяю местоположение, файл существует и находится в правильном месте.

 total 96
-rw------- 1 ajs3g11 mm     0 2019-04-02 12:48 dolfin_fbfc275cbcbd922aeeb604be688cc6206a71c594.lock
drwx------ 4 ajs3g11 mm 32768 2019-04-02 12:48 dolfin_fbfc275cbcbd922aeeb604be688cc6206a71c594
drwx------ 4 ajs3g11 mm 32768 2019-04-02 17:06 dolfin_abe903615e73dfd155bc3ce45776a118093f71ff
-rw------- 1 ajs3g11 mm     0 2019-04-02 17:07 dolfin_abe903615e73dfd155bc3ce45776a118093f71ff.lock
-rw------- 1 ajs3g11 mm     0 2019-04-08 13:44 dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9.lock
drwx------ 4 ajs3g11 mm 32768 2019-04-08 13:44 dolfin_2e958ba2ca5c864d398064d4f2a072e75125d7b9```

  

Комментарии:

1. conda Одинаково ли настроена среда между двумя машинами? Вы пробовали export импортировать его в файл требований на первой машине и воссоздать его из файла на второй?

2. Нет, могут быть некоторые различия. Я попытаюсь экспортировать среду conda с рабочей машины на другую.

Ответ №1:

Изначально я хотел добавить комментарии, но у меня недостаточно репутации для этого. Это всего лишь предложение и направление для решения проблемы, но не ответ на проблему. Также я довольно новичок в python, поэтому могут быть способы получше.

Вы можете попробовать отладить программу с помощью pdb https://docs.python.org/2/library/pdb.html

Из вашего кода очевидно, что «import_module_directly» возвращает None и запускает утверждение

Вы можете использовать свою консоль для запуска pdb, установить точку останова в функцию «import_module_directly», затем выполнить по строке и проверить, что не так. Вы можете проверить локальные переменные и аргументы функции с помощью pdb.

Ответ №2:

Я до сих пор не знаю, в чем была проблема или что ее вызывало, но экспортирую рабочую среду в .файл yml и установка его с этого на другой компьютер устранили проблему.

Ответ №3:

Даже если уже поздно, но я хочу кое-что добавить сюда.

Если вы устанавливаете fenics из pip, возможно, вы не установили пакеты cmake / gmp / mpfr. Вы можете установить их в Ubuntu напрямую с помощью:

sudo apt install cmake gmp mpfr

Возможно, вам также потребуется установить boost / vtk / openmpi / eigen, в зависимости от того, как собран исходный пакет fenics. Обычно я собирал сам, поэтому я знаю, какие пакеты требуются.

В большинстве случаев вышеуказанная ошибка возникает из-за отсутствия какого-либо инструмента / пакета в вашей системе.