2016-07-15 113 views
5

Proveniente da R, utilizzando setwd per modificare la directory è un grande no-no contro la riproducibilità perché altri non hanno la stessa struttura di directory del mio. Quindi, si consiglia di utilizzare il percorso relativo dalla posizione dello script.Imposta la directory di lavoro in Python/Spyder in modo che sia riproducibile

Gli IDE complicano leggermente questo perché impostano la propria directory di lavoro. In Rstudio, posso facilmente aggirare questo problema con i progetti di Rstudio, impostando la directory del progetto come cartella di script.

Con Python e Spyder, non sembra esserci alcuna soluzione. Spyder non ha una funzionalità come il progetto di Rstudio. Setting the directory to the script's location non funziona durante l'analisi interattiva (poiché __file__ non è disponibile).

Cosa fare in modo che la directory di lavoro in Python/Spyder sia riproducibile?

risposta

2

Sembra che hanno fatto considerare questo come una caratteristica in Spyder sulla base di questo biglietto GitHub, ma è ancora in attesa di attuazione a partire da metà maggio:

potremmo aggiungere un'opzione per la finestra di dialogo Esegui automaticamente imposta la directory di lavoro su quella in cui viene eseguito lo script.

Tuttavia, qualcun altro dovrà implementarlo. Siamo abbastanza occupati con altre cose al momento, mi dispiace.

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

@ ccordoba12 ccordoba12 aggiunto questo al traguardo lista dei desideri, il 14 maggio

3

Nel frattempo, è possibile utilizzare os.chdir

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

Per fare questo automaticamente, mettilo all'inizio del tuo script:

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

Bene, ci sono molte cose che puoi provare! 1. Modificare la directory nella directory corrente nella barra degli strumenti. 2. Modificare la directory globale nella directory corrente in Preferenze> Directory di lavoro globale. Fare clic sul pulsante di opzione "la directory di file corrente".

Spero che aiuti!