2011-11-23 15 views
132

Używam Python 3.2 w Windows 7. Kiedy otwieram powłokę Pythona, skąd mogę wiedzieć, co to jest katalog bieżący i jak mogę go zmienić na inny katalog, w którym znajdują się moje moduły?Jak poznać/zmienić aktualny katalog w powłoce Pythona?

+1

@Ignacio, Co masz na myśli? – astay13

+0

Zostało to już omówione [tutaj] [1]: http://stackoverflow.com/questions/431684/how-do-i-cd-in-python – mudda

+4

@ astay13 - Myślę, że Ignacio oznacza, że nie są przeznaczone do zmiany katalogu na ścieżkę modułu. Prawdopodobnie powinieneś sprawdzić zmienną środowiskową PYTHONPATH. – simon

Odpowiedz

188

można użyć modułu os.

>>> import os 
>>> os.getcwd() 
'/home/user' 
>>> os.chdir("/tmp/") 
>>> os.getcwd() 
'/tmp' 

Ale jeśli chodzi o znalezienie innych modułów: Można ustawić zmienną środowiskową o nazwie PYTHONPATH pod Linux będzie jak

export PYTHONPATH=/path/to/my/library:$PYTHONPATH 

Następnie wyszukuje tłumaczy również w tym miejscu przez import modułów ed. Myślę, że nazwa byłaby taka sama w systemie Windows, ale nie wiem jak się zmienić.

edit

Pod Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib 

(zaczerpnięte z http://docs.python.org/using/windows.html)

edit 2

... a nawet lepiej: użyj virtualenv i virtualenv_wrapper, to wszystko sprowadzi w tworzeniu środowiska programistycznego, w którym można dodawać ścieżki modułów według własnego uznania (add2virtualenv) bez zanieczyszczania instalacji lub "normalnego" środowiska pracy.

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

+0

masz prawo edytować pytanie, aby dodać sugestię dotyczącą 'PYTHONPATH', ale zauważ, że OP określa Windows ... – simon

+0

A jaki jest problem z PYTHONPATH pod Windows? Ale poprawiłem odpowiedź. –

+0

Czy muszę ustawić PYTHONPATH w wierszu poleceń systemu Windows lub w powłoce Python? – astay13

4

Jeśli import os można użyć os.getcwd uzyskać bieżący katalog roboczy, a można użyć os.chdir aby zmienić katalog

12

chcesz

import os 
os.getcwd() 
os.chdir('..') 
+1

os.chdir ("C: \ Users \ Ajeya \ Documents \ ') ^ Błąd syntax: EOL podczas skanowania literału ciągu znaków – AAI

+1

@Wszystko, czego potrzebujesz podwoić ukośniki odwrotne, jeśli używasz ich w zwykłym (nie-surowym) łańcuchu Pythona. Python pozwala również używać zamiast tego ukośników. Tak więc albo "os.chdir (" C:/Users/Ajeya/Documents ")' lub 'os.chdir (" C: \\ Users \\ Ajeya \\ Documents ")' lub 'os.chdir (r "C: \ Users \ Ajeya \ Documents") ". –

4

Zmiana bieżący katalog nie jest sposobem radzenia sobie ze znalezieniem modułów w Pythonie.

Zobacz raczej dokumentację dla The Module Search Path, aby dowiedzieć się, w jaki sposób Python znajduje moduł do zaimportowania.

Oto odnośny nieco od Standard Modules odcinku:

The variable sys.path is a list of strings that determines the interpreter’s search path for modules. It is initialized to a default path taken from the environment variable PYTHONPATH, or from a built-in default if PYTHONPATH is not set. You can modify it using standard list operations:

>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

W odpowiedzi na pierwotne pytanie o uzyskanie i ustawianie bieżący katalog:

>>> help(os.getcwd) 

getcwd(...) 
    getcwd() -> path 

    Return a string representing the current working directory. 

>>> help(os.chdir) 

chdir(...) 
    chdir(path) 

    Change the current working directory to the specified path. 
7
>>> import os 
>>> os.system('cd c:\mydir') 

W rzeczywistości os.system() może wykonać dowolny polecenie, że okno wiersza polecenia systemu Windows może wykonać, a nie tylko zmienić katalog.

+0

Plik "", wiersz 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL podczas skanowania ciąg dosłowne – AAI

0

Najprostszym sposobem na zmianę bieżącego katalogu roboczego w Pythonie jest użycie pakietu "os". Poniżej znajduje się przykład komputera Windows:

#import the os package 
import os 
# Confirm the current working directory 
os.getcwd() 
# use '\\' while chaning the directory 
os.chdir("C:\\user\\foldername") 
+0

Jak to się różni od przyjętego odpowiedź? – Iceman

+0

użycie "\\" i wyjaśnienie dotyczące komputera z systemem Windows. Ale zgadzam się, że zaakceptowana odpowiedź jest bardziej opisowa. – sambeet

Powiązane problemy