nicht importieren Ich habe ein Jupyter-Notebook mit Python 3.5. Ich benutze es um Daten aus einer Simulation zu analysieren, die ich in Python geschrieben habe.Kann Python-Funktion in Jupyter
In der ersten Zelle, betreibe ich die Simulation mit
%run control.py
und erhalte ich die Fehler
> 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'
mein Programm auf mehrere Dateien aufgeteilt. Wenn ich die Methode 'get_dataframe_from_results' von den Importen entferne, funktioniert es. Diese Methode ist zusammen mit einigen anderen in der Datei/Modul write2csv.
Ich verstehe nicht, warum nur diese Methode nicht importiert werden kann. Alle anderen Funktionen aus dieser Datei können importiert werden, sodass ich ein Problem mit dem Speicherort des Quellordners ausschließe.
Die Funktion selbst enthält nichts aus dem Üblichen:
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
Der einzige „Grund“, warum es etwas Besonderes sein könnte im Vergleich zu anderen Funktionen ist, dass es verwendet Pandas.
Wenn ich das Skript control.py in PyCharm ausführen, funktioniert es ohne Probleme. Wenn ich es von der Kommandozeile ausführen, bekomme ich
Fehler beim spec für 'control.py' zu finden (: Modul 'Kontrolle' hat kein Attribut 'Pfad')
Wenn ich die Funktion get_dataframe_from_results aus meinem Code weglasse, funktioniert es in Jupyter.
Wie kann ich diesen Fehler in Jupyter umgehen und habe meine Funktion?
Die Version des Notebook-Server 4.1.0 und läuft auf:
Python 2.7.11 | Anaconda 4.0.0 (64-Bit) | (Standard, 16. Februar 2016, 09.58.36) [MSC v.1500 64 Bit (AMD64)]
Aktuelle Kernel Information:
Python 3.5.1 | Anaconda 4.1.0 (64-Bit) | (Standard, 15. Juni 2016, 15:29:36) [MSC v.1900 64 bit (AMD64)]