2016-05-24 3 views
1

У меня есть следующая проблема с ipyparallel (с использованием python 3.4). view.sync_imports пренебрегает дополнительным именем модуля, к которому я пытаюсь связать их с директивой 'as'.ipyparallel view.sync_import не связывается с дополнительным именем

Пример:

c = Client(profile='slurm') 
v = c[:] 
with v.sync_imports(): 

    import pandas as pd 

Output: importing pandas on engine(s) 

Так панды доступен только под названием 'панд'. Любое предложение, что я могу сделать по этому поводу?

Я также попытался% пикс магии, не помогает

ответ

2

Когда вы

import pandas as pd 

Python интерпретирует, что как две операции: import и assignment

import pandas 
pd = pandas 

sync_imports() реализуется как import hook, который (насколько я могу судить) имеет доступ только к части импорта, а не к части назначения , Это означает, что sync_imports может поддерживать только import pandas, а не import pandas as pd.

Однако %pxдолжен работать, так как он просто выполняется непосредственно:

import pandas as pd  # local 
%px import pandas as pd # remote 

Или как магии клеток с --local, если вы хотите сделать общую инициализацию всех двигателей и локальное рабочее пространство:

%%px --local 
import pandas as pd 
def defined_everywhere(): 
    """...""" 
+0

[@minrk] круто, спасибо за объяснение. – PlagTag