Как я могу импортировать несколько .so файлов в Python с помощью цикла for? - PullRequest
0 голосов
/ 12 декабря 2018

Итак, я хотел бы импортировать несколько .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, находящиеся в каталоге 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')

Но я получаю сообщение об ошибке, подобное следующему

ImportError: Import by filename is not supported.

Может ли кто-нибудь помочь мне в этом вопросе?Большое спасибо!

1 Ответ

0 голосов
/ 12 декабря 2018
for channel in channels:
    module = './so' + channel

Вы уверены, что получаете правильные имена файлов в этом случае?Возможно исправление:

module = channel
...