2016-07-15 108 views
5

Kommend von R, setwd verwenden, um das Verzeichnis zu ändern, ist ein großes Nein gegen Reproduzierbarkeit, weil andere nicht die gleiche Verzeichnisstruktur wie meine haben. Daher wird empfohlen, einen relativen Pfad vom Speicherort des Skripts zu verwenden.Setze das Arbeitsverzeichnis in Python/Spyder so, dass es reproduzierbar ist

IDEs verkomplizieren das leicht, weil sie ihr eigenes Arbeitsverzeichnis setzen. In Rstudio kann ich dieses Problem mit den Rstudio-Projekten umgehen, indem ich das Projektverzeichnis als meinen Skriptordner einstelle.

Mit Python und Spyder scheint es keine Lösung zu geben. Spyder hat keine Funktion wie Rstudio's Projekt. Setting the directory to the script's location funktioniert nicht während der interaktiven Analyse (__file__ ist nicht verfügbar).

Was ist zu tun, damit das Arbeitsverzeichnis in Python/Spyder reproduzierbar ist?

Antwort

2

Es scheint, dass sie dies in Spyder als Feature betrachten haben auf der Grundlage dieses GitHub Ticket, aber es ist nach wie vor die Umsetzung ab Mitte Mai warten:

Wir könnten eine Option zum Ausführen-Dialog in der automatisch Setzen Sie das Arbeitsverzeichnis auf das Verzeichnis, in dem das Skript ausgeführt wird.

Allerdings muss jemand anderes es implementieren. Wir sind ziemlich beschäftigt mit anderen Dingen im Moment, sorry.

https://github.com/spyder-ide/spyder/issues/3154

@ ccordoba12 ccordoba12 hat dieses Bild auf die Wunschliste Meilenstein am 14. Mai

3

In der Zwischenzeit können Sie os.chdir

verwenden
import os 
os.chdir('C:\Users\me\Documents') 
2

zu tun Setzen Sie dies automatisch an den Anfang Ihres Skripts:

from os import chdir, getcwd 
wd=getcwd() 
chdir(wd) 
0

Nun, es gibt eine Menge Dinge, die Sie ausprobieren können! 1. Ändern Sie das Verzeichnis in das aktuelle Verzeichnis in der Symbolleiste. 2. Ändern Sie das globale Verzeichnis unter Voreinstellungen> Globales Arbeitsverzeichnis in das aktuelle Verzeichnis. Klicken Sie auf das Optionsfeld "Das aktuelle Dateiverzeichnis".

Hoffe es hilft!