Python-명령 줄 모듈 실행 중에 PYTHONPATH 추가


91

나는 실행하고 싶다 :

python somescript.py somecommand

그러나 이것을 실행할 때 PYTHONPATH특정 디렉토리를 포함 해야 합니다. 내가 실행중인 프로젝트에 따라 추가하려는 디렉토리가 변경되기 때문에 내 환경 변수에 추가 할 수 없습니다. PYTHONPATH스크립트를 실행하는 동안 변경하는 방법이 있습니까? 참고 : PYTHONPATH변수도 없기 때문에이 스크립트를 실행하는 동안 변수를 추가하거나 재정의하는 것에 대해 걱정할 필요가 없습니다.

답변:


152

Mac / Linux의 경우;

PYTHONPATH=/foo/bar/baz python somescript.py somecommand

Windows의 경우 래퍼를 설정하십시오 pythonpath.bat.

@ECHO OFF
setlocal
set PYTHONPATH=%1
python %2 %3
endlocal

다음과 pythonpath.bat같은 스크립트 파일을 호출 합니다.

pythonpath.bat /foo/bar/baz somescript.py somecommand

@ İsmail-감사합니다. 그러나 명령 프롬프트에서 스크립트를 실행하는 동안 어떻게 할 수 있습니까? 저는 파이썬을 실행하지 않고, 물건을 가져오고, 수동으로 실행하지 않습니다.
orokusaki 2011 년

Mac / Linux에서는 할 수 있습니다PYTHONPATH=/foo/bar python somescript.py somecommand
ismail

나는 시도 python -c"import sys;sys.path.append('/my/dir')"하고 python myscript.py mycommand있지만, 분명히 다음에 제 1 통역자 세션에서 경로를 공유하지 않습니다. 아, 방금 다음 댓글을 보았습니다. 지금 시도해보세요. WinXP에서 작동하지 않았습니다.
orokusaki 2011 년

1
unsetWindows 에는 환경 변수 명령 이 없습니다 . 대신에 setlocal이니셜 뒤에를 추가 하면 .bat 스크립트가 종료 될 때 echo off암시 적이 endlocal발생합니다 (그리고 PYTHONPATH이전 값으로 복원 됨).
martineau 2011 년

5
Windows 에서 기존 경로 를 추가PYTHONPATH 하려면을 사용할 수 있습니다 set PYTHONPATH=%PYTHONPATH%;%1.
martineau 2011 년

49
 import sys
 sys.path.append('your certain directory')

기본적으로 sys.path는 파이썬 모듈에 대한 모든 검색 경로가있는 목록입니다. 인터프리터에 의해 초기화됩니다. PYTHONPATH의 내용은 해당 목록의 끝에 자동으로 추가됩니다.


10
또는 sys.path.insert (0, '/ some / directory')를 사용하여 경로 앞에 배치하십시오. 이렇게하면 머티리얼이 이미 pythonpath에있을 수있는 다른 항목을 재정의 할 수 있습니다.
sienkiew

이 답변을 사용하여 pydev-eclipse IDE 외부에서 uninttest를 실행했습니다.
LAL

sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')Windows의 예.
Bob Stein

10

와 같은 POSIX 호환 셸에서 명령을 실행하는 경우 다음과 같이 bash환경 변수를 설정할 수 있습니다.

PYTHONPATH="/path/to" python somescript.py somecommand

모두 한 줄에있는 경우 PYTHONPATH 환경 값은 해당 명령 하나에 만 적용됩니다.

$ 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

내가 찾던 것, 정말 감사합니다. 어떤 이유로 실행 python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"이 작동하지 않았습니다.
Luke Davis

0

스크립트 내에서 함수를 실행하기 위해 이것을 시도 할 수 있습니다.

python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"

-1

이것은 Windows 용입니다.

예를 들어, 데스크탑에 "mygrapher"라는 폴더가 있습니다. 내부에는 "grapherMain.py"기본 파일에 필요한 Python 파일이 포함 된 "calculation"및 "graphing"폴더가 있습니다. 또한 "grapherMain.py"는 "graphing"에 저장됩니다. 파일을 이동하지 않고 모든 것을 실행하려면 배치 스크립트를 만들 수 있습니다. 이 배치 파일을 "rungraph.bat"라고합시다.

@ECHO OFF
setlocal
set PYTHONPATH=%cd%\grapher;%cd%\calculation
python %cd%\grapher\grapherMain.py
endlocal

이 스크립트는 "mygrapher"에 있습니다. 작업을 실행하려면 명령 프롬프트에 들어가서 다음을 수행합니다.

>cd Desktop\mygrapher (this navigates into the "mygrapher" folder)
>rungraph.bat (this executes the batch file)

6
그리고 이것이 @ İsmail 'cartman'Dönmez 답변과 어떻게 다른가요?
Alex Okrushko 2012-07-27
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.