Chcę biec:
python somescript.py somecommand
Ale kiedy to uruchamiam, muszę PYTHONPATH
dołączyć określony katalog. Nie mogę po prostu dodać go do moich zmiennych środowiskowych, ponieważ katalog, który chcę dodać, zmienia się na podstawie uruchomionego projektu. Czy istnieje sposób na zmianę PYTHONPATH
podczas uruchamiania skryptu? Uwaga: nie mam nawet PYTHONPATH
zmiennej, więc nie muszę się martwić o dołączenie do niej, a nie nadpisanie jej podczas uruchamiania tego skryptu.
python
pythonpath
orokusaki
źródło
źródło
PYTHONPATH=/foo/bar python somescript.py somecommand
python -c"import sys;sys.path.append('/my/dir')"
a potempython myscript.py mycommand
, ale oczywiście nie dzieli ścieżki z pierwszej sesji tłumaczeniowej z następną. Ach, właśnie zobaczyłem twój następny komentarz, próbuję teraz ... Nie działa w WinXP.unset
systemie Windows nie ma polecenia zmiennej środowiskowej. Zamiast tego dodaj znaksetlocal
po inicjału,echo off
a poendlocal
zakończeniu działania skryptu .bat wystąpi niejawny (iPYTHONPATH
zostanie przywrócony do jego poprzedniej wartości).PYTHONPATH
, możesz użyćset PYTHONPATH=%PYTHONPATH%;%1
.import sys sys.path.append('your certain directory')
Zasadniczo sys.path to lista ze wszystkimi ścieżkami wyszukiwania dla modułów Pythona. Jest inicjowany przez interpreter. Zawartość PYTHONPATH jest automatycznie dodawana na końcu tej listy.
źródło
sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')
przykład w systemie Windows.Jeśli uruchamiasz polecenie z powłoki zgodnej z POSIX, na przykład
bash
, możesz ustawić zmienną środowiskową w następujący sposób:PYTHONPATH="/path/to" python somescript.py somecommand
Jeśli wszystko jest w jednym wierszu, wartość środowiska PYTHONPATH ma zastosowanie tylko do tego jednego polecenia.
$ echo $PYTHONPATH $ python -c 'import sys;print("/tmp/pydir" in sys.path)' False $ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)' True $ echo $PYTHONPATH
źródło
python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"
nie działało.Możesz spróbować wykonać tę funkcję w swoim skrypcie
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
źródło
Dotyczy to okien:
Na przykład mam na pulpicie folder o nazwie „mygrapher”. Wewnątrz znajdują się foldery zwane „obliczenia” i „wykresy”, które zawierają pliki Pythona, których potrzebuje mój główny plik „grapherMain.py”. Ponadto „grapherMain.py” jest przechowywany w „graphing”. Aby uruchomić wszystko bez przenoszenia plików, mogę zrobić skrypt wsadowy. Nazwijmy ten plik wsadowy „rungraph.bat”.
@ECHO OFF setlocal set PYTHONPATH=%cd%\grapher;%cd%\calculation python %cd%\grapher\grapherMain.py endlocal
Ten skrypt znajduje się w „mygrapher”. Aby uruchomić rzeczy, wchodziłem do wiersza poleceń, a następnie robiłem:
>cd Desktop\mygrapher (this navigates into the "mygrapher" folder) >rungraph.bat (this executes the batch file)
źródło