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

如何将几个.so文件导入到带有for循环的python中?

  •  1
  • zyy  · 技术社区  · 7 年前

    所以我想进口几个 .so 子目录中的文件,这是树

    .
    ├── driver.py
    ├── intvegas.f
    ├── jetdrive-unp-algo.f90
    ├── jetint-unp-algo.f
    ├── jetme-unp-algo.f
    ├── makefile
    ├── part-unp-ms.f90
    ├── setup.sh
    └── so
        ├── g_g_to_g_g.so
        ├── g_g_to_q_qb.so
        ├── g_q_to_g_q.so
        ├── q_q_to_q_q.so
        ├── q_qb_to_g_g.so
        ├── q_qb_to_q_qb.so
        ├── q_qb_to_qp_qbp.so
        ├── q_qbp_to_q_qbp.so
        ├── q_qp_to_q_qp.so
        └── total.so
    

    我想把所有的 所以 文件驻留在目录中 so ,这是代码

    #!/usr/bin/env python
    import sys, os
    sys.path.insert(0, './so')
    import numpy as np
    import pylab as py
    
    channels = {'total', 'q_qp_to_q_qp', 'q_qbp_to_q_qbp', 'q_q_to_q_q', 'q_qb_to_qp_qbp', 'q_qb_to_q_qb', 'q_qb_to_g_g', 'g_g_to_q_qb', 'g_q_to_g_q', 'g_g_to_g_g'}
    import importlib
    for channel in channels:
        module = './so' + channel
        globals()[module] = importlib.import_module(module, package = 'my_current_package')
    

    但我有错误,比如

    导入错误:不支持按文件名导入。

    在这个问题上有人能帮我吗?非常感谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   zyy    7 年前
    for channel in channels:
        module = './so' + channel
    

    在这种情况下,您确定获得了正确的文件名吗? 也许解决方法是:

    module = channel