Чтобы пометить i
как переменную, необходимо заключить ее в фигурные скобки.
Вот простой пример того, как это работает:
a = 'foo'
!echo a
!echo {a}
Производит:
a
foo
Для вашего конкретного случая это будет выглядеть примерно так:
import sys
a=['numpy','itertools','wxPython']
for i in a:
try:
exec('import %s' % i)
print('%s is imported'%i)
except ImportError:
!conda install --yes --prefix {sys.prefix} {i}
exec('import %s' % i)
print('%s was successfully imported'%i)
Обратите внимание, что я отключил вызов importlib для строки с exec, чтобы модули были назначены пространству имен. Вероятно, есть более питонский способ сделать это, если вы более знакомы с importlib.
Это не полностью решает проблему для меня, так как я продолжаю получать ModuleNotFoundError
s для wxPython, но это решает вашу немедленную ошибку.