У меня есть ноутбук Jupyter с Python 3.5. Я использую его для анализа данных из симуляции, написанных на Python.Невозможно импортировать функцию Python в Jupyter
В первой камере, я запустить моделирование с
%run control.py
и я получаю ошибку
> ImportError Traceback (most recent call
> last) ...\code\control.py in
> <module>()
> 15 from supplier import Supplier
> 16 from heatmap import create_heatmaps
> ---> 17 from write2csv import get_dataframe_from_results, write_raw_data_from_simulation, get_aggregated_lines_per_run
> 18 #write_aggregated_results,
> 19
>
> ImportError: cannot import name 'get_dataframe_from_results'
моя программа разделяется между несколькими файлами. Когда я удаляю метод get_dataframe_from_results из импорта, он работает. Этот метод наряду с несколькими другими в файле/модуле write2csv.
Не понимаю, почему только этот метод нельзя импортировать. Все другие функции из этого файла можно импортировать, поэтому я исключаю проблему с местоположением исходной папки.
Сама функция не содержит ничего необычного:
def get_dataframe_from_results(all_aggr_results):
# convert results to pandas data frame from nested dictionary
results_df = pd.Panel(all_aggr_results)
STRATS = ("AN", "RE")
RLZ = ("NOR", "DIS")
vlzlist = []
for vlz in sorted(all_aggr_results):
outerlist = []
for rl in RLZ:
concatlist = []
for strt in STRATS:
concatlist.append(pd.DataFrame.from_dict(results_df[vlz][strt][rl], orient="index"))
outerlist.append(pd.concat(concatlist, keys=STRATS))
vlzlist.append(pd.concat(outerlist, keys=RLZ))
results = pd.concat(vlzlist, keys=sorted(all_aggr_results))
results.index.names = ["A", "B", "C", "C"]
results["totalcost"] = results["AAA"] + results["BBB"] + results["CCC"] + results["DDD"]
results.reset_index(inplace=True) # transform multiindex to columns
return results
Единственной «причины» почему это может быть особенными по сравнению с другими функциями является то, что он использует панда.
Когда я запускаю скрипт control.py в PyCharm, он работает без проблем. Когда я запустить его из командной строки, я получаю
Ошибки при поиске спецификации для «control.py» (: модуля «контроль» не имеет атрибута «путь»)
Когда я оставляю функцию get_dataframe_from_results из моего кода, она работает в Jupyter.
Как я могу обойти эту ошибку в Jupyter и выполнить мою функцию?
версия сервера ноутбука является 4.1.0 и работает на:
Python 2.7.11 | Anaconda 4.0.0 (64-разрядной) | (По умолчанию, 16 Февраль 2016, 9:58:36) [MSC v.1500 64 бит (AMD64)]
Текущий Kernel Информация:
Python 3.5.1 | Anaconda 4.1.0 (64-разрядная версия) | (по умолчанию, 15 июня 2016, 15:29:36) [MSC v.1900 64 бит (AMD64)]