ipython 내에서 Python 스크립트 실행


122

경로를 표시하지 않고 ipython 내부에서 모듈이 아닌 Python 스크립트를 실행할 수 있습니까? PYTHONPATH를 설정하려고했지만 모듈에서만 작동하는 것 같습니다. 나는 실행하고 싶다

%run my_script.py

파일이 포함 된 디렉토리에 있지 않습니다.


import <module>본질적으로 exec(<moduleSource>)JavaScript 또는 Perl 과 동일 합니다.
Vortico

14
% run abc.py 구문에 +1-그것을 찾으려고했습니다
Sid Kshatriya

1
예를 들어 % 실행 ../scripts/my_scripts : 당신이 경로를 사용할 수 있습니다
호세 A. 마틴

Click 라이브러리로 개발 된 CLI 스크립트의 경우 작동하지 않습니다. IOErrorTraceback (가장 최근 호출) /home/miguelfg/workspace/projects*********/db_preparation.py in <module > () 1270 1271 if name == " main ":-> 1272 main () 1273 1274 ...
miguelfg

답변:


126

"my_script.py"디렉토리에서 다음을 수행 할 수 있습니다.

%run ./my_script.py

단순성과 간결함을위한 베스트 답변
Evhz

SyntaxError: invalid syntax여기, Python 콘솔 . Debian 9의 Python 3.5.3. 그러나 IPython에서 작동합니다.
rotton

1
@rotton %run은 파이썬 언어 자체의 일부가 아니라 ipython 매직 명령 이기 때문 입니다.
HugoMailhot

28

Ipython에서 스크립트를 실행하는 방법

import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py

그렇게해야합니다


16

%run마법 매개 변수가 file_finder이 (참조 실행 파일의 전체 경로를 얻기 위해 사용하는 여기를 ) 아시다시피, 현재 디렉토리에서 필요한 경우 ".py"를 추가합니다.

사용하는 파일 찾기를 지정하는 방법이있을 것 같지 않습니다 에서%run 마술,하지만 자신의 마법 명령을 정의에서 당신을 막을 수있는 건 없습니다 그에 호출 %run적절한 파일 찾기와.

A와 매우 불쾌한 해킹, 기본 무시할 수있는 file_finder자신과를 :

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder

솔직히 말해서, IPython API는 자신의 마법을 정의하는 것처럼 계속 작동 할 가능성이있는 속도로 변화하고 있습니다.


16

파이썬에서는 모듈과 스크립트 사이에 차이가 없습니다. 스크립트와 모듈을 모두 실행할 수 있습니다. python은 문제의 파일을 찾을 수 있어야하므로 파일은 pythonpath AFAIK에 있어야합니다. python이 디렉토리에서 실행되면 디렉토리가 자동으로 pythonpath에 추가됩니다.

다른 Python 스크립트에서 Python 스크립트를 호출하는 가장 좋은 방법은 무엇입니까?를 참조하십시오 . 모듈 대 스크립트에 대한 자세한 정보는

원하는 것을 수행하는 내장 함수 execfile (filename)도 있습니다.


1
그게 제가 생각했던 것이기도합니다. 그러나 실제로 모듈을 가져올 수 있지만 스크립트가 속한 디렉토리에서 시작하지 않는 한 인터프리터가 스크립트를 찾을 수 없습니다.
Tyler Durden

1
자세한 내용docs.python.org/tutorial/modules.html#the-module-search-path 를 읽어 보세요 . 파이썬이 파일을 찾기 위해 넣어야하는 위치를 자세히 설명합니다. 더 구체적으로, 많은 모듈은 끝에 "if __name__== ' __main__':"줄을 사용하여 스크립트로 두 배가 될 수 있습니다
Snakes and Coffee

0

Python 3.6.5 용

import os
os.getcwd()
runfile('testing.py')

1
인가 runfile()의 명령 ipython? 나를 위해 기본적으로 작동하지 않습니다.
user3342981
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.