Python 또는 ipython 인터프리터에 들어갈 때 자동으로 모듈 가져 오기


120

import numpy as np파이썬 인터프리터를 실행할 때마다 거의 매번 타이핑하는 것을 발견했습니다 . numpy를 자동으로 가져 오도록 python 또는 ipython 인터프리터를 어떻게 설정합니까?

답변:


71

환경 변수 PYTHONSTARTUP를 사용하십시오 . 공식 문서에서 :

읽을 수있는 파일의 이름 인 경우 첫 번째 프롬프트가 대화 형 모드로 표시되기 전에 해당 파일의 Python 명령이 실행됩니다. 파일은 대화 형 명령이 실행되는 동일한 네임 스페이스에서 실행되므로 여기에 정의되거나 가져온 개체를 대화 형 세션에서 자격없이 사용할 수 있습니다.

따라서 import 문으로 python 스크립트를 만들고 환경 변수를 지정하십시오. 그렇긴하지만 '명시적인 것이 항상 암시적인 것보다 낫다'는 것을 기억하십시오. 따라서 프로덕션 스크립트에 대해이 동작에 의존하지 마십시오.

Ipython의 경우 ipython_config 파일을 만드는 방법에 대한 자습서를 참조 하세요.


@mklauber, 감사합니다.하지만 허용되는 솔루션은 더 이상 사용되지 않습니다. 그러나 그것은 제 편집에 영감을주었습니다. @ OP : 내 수정 된 답변보기
Dhara

3
이 글을 쓰는 시점에서 @ user545424 (ipython 1.1.0)는 PYTHONSTARTUP도 지원합니다.
pflaquerre

설정은 env PYTHONSTARTUP="~/.startup.py"나를 위해 작동하지 않았다
Seanny123

export PYTHONSTARTUP=~/.python_shell_startup.py변수 설정에 대한 참고 사항 입니다.
PallavBakshi

78

ipython의 경우이를 달성하는 두 가지 방법이 있습니다. 둘 다에있는 ipython의 구성 디렉토리를 포함 ~/.ipython합니다.

  1. 사용자 지정 ipython 프로필을 만듭니다.
  2. 또는 다음 위치에 시작 파일을 추가 할 수 있습니다. ~/.ipython/profile_default/startup/

간단하게하기 위해 옵션 2를 사용 합니다. 디렉토리에 .py또는 .ipy파일을 배치 ~/.ipython/profile_default/startup하면 자동으로 실행됩니다. 따라서 import numpy as np간단한 파일에 간단하게 배치 할 수 있으며 ipython 프롬프트의 네임 스페이스에 np가 있습니다.

옵션 2는 실제로 사용자 지정 프로필과 함께 작동하지만 사용자 지정 프로필을 사용하면 특정 경우에 따라 시작 요구 사항 및 기타 구성을 변경할 수 있습니다. 당신이 거라고 그러나, 언제나 처럼이 np모든 수단이 시작 디렉토리에 넣어하여 다음에 사용할 수 있습니다.

ipython 구성에 대한 자세한 내용은. 문서는 훨씬 더 자세한 설명이 있습니다.


2
Ubuntu 14.04에서 디렉토리는 실제로 다음 ~/.config/ipython/profile_default/startup/과 같습니다.~/.ipython/profile_default/startup/
Peter

1
안타깝게도 위의 옵션 2는 탭 완성을 허용하지 않습니다.
user1717828

21

다음과 같이 ~ / .startup.py 파일을 사용합니다.

# Ned's .startup.py file
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")

pp = pprint.pprint

그런 다음 PYTHONSTARTUP = ~ / .startup.py를 정의하면 Python이 쉘을 시작할 때이를 사용합니다.

print 문이 있으므로 셸을 시작하면 적용되고 있으며 이미 가져온 내용이 있다는 알림이 표시됩니다. pp바로 가기가 너무 정말 편리합니다 ...


Linux에서 나를 위해 작동하지 않았습니다. 파이썬에게 내 홈 디렉토리를 찾도록 지시해야합니까?
Seanny123 2015-06-25

죄송합니다 : 중요한 단계를 잊어 버렸 : 나는 그것을 추가했습니다 : PYTHONSTARTUP 정의
네드 BATCHELDER

작업을 ~대체 할 때가 언제인지 알 수 $HOME없지만이 상대 경로 대신 MacOS, fish 및 python3에서 절대 경로를 사용해야했습니다.
rien333

@Ned Batchelder, 감사합니다. 이것이 제가 찾고 있던 것입니다. 사이드 질문, 나는 이것을 Windows에서 사용하고 있으며 pp 단축키가 작동하지 않습니다. 조언 해 주시겠습니까? >>> pp <function pprint at 0x0000020DAF90C8C8> >>> pp () Traceback (most recent call last) : File "<stdin>", line 1, in <module> TypeError : pprint () missing 1 필수 위치 인수 : 'object'>>>
Forever Learner

5

같은 사용자 정의 시작 스크립트를 만드는 동안 ravenac95이 제안 대부분의 경우에 가장 일반적인 대답은, 그것은 당신이 사용하려는 상황에서 작동하지 않습니다 from __future__ import X. 때때로 Python 2.x에서 작업하지만 최신 분할을 사용하려면 한 가지 방법 만 있습니다. 프로필을 만든 후에는 profile_default(Ubuntu의 경우이 위치에 있음 ~/.ipython/profile_default)을 편집 하고 아래에 다음과 같은 내용을 추가합니다.

c.InteractiveShellApp.exec_lines = [
    'from __future__ import division, print_function',
    'import numpy as np',
    'import matplotlib.pyplot as plt',
    ]

3

Linux에서 허용되는 답변에 대한 더 간단한 대안으로 :

예를 들어 alias pynp='python -i -c"import numpy as np"'~ / .bash_aliases 파일에 별칭을 정의 하십시오. 그런 다음에서 python + numpy를 호출 pynp할 수 있으며 python. Python 스크립트의 동작은 그대로 유지됩니다.


PYTHONSTARTUP대화 형 모드 에서만 호출 되므로 Python 스크립트의 동작은 어쨌든 그대로 유지됩니다. 파일 참조를 사용하여 별칭을 만들 수도 있습니다.alias pynp='PYTHONSTARTUP="~/.startup.py" python'
F.Raab

2

같이 정상적인 파이썬 스크립트를 만들 수 있습니다 import_numpy.py당신이 좋아하는 또는 아무것도

#!/bin/env python3
import numpy as np

그런 다음 -i플래그 로 시작하십시오 .

python -i import_numpy.py

이와 같은 방법은 다른 프로젝트에 대해 원하는 모듈 만 선택할 수있는 유연성을 제공합니다.


1

으로 ravenac95는 그의 언급 대답 , 당신도 사용자 정의 프로파일을 만들거나 기본 프로필을 수정할 수 있습니다. 이 답변은 import numpy as np자동으로 필요한 Linux 명령에 대한 빠른보기입니다 .

라는 사용자 지정 프로필을 사용 numpy하려면 다음을 실행합니다.

ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy

또는 항상 numpy를 가져 오도록 기본 프로필을 수정하려는 경우 :

echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython

프로필 구성에 대한 자세한 내용 은 IPython 구성 자습서 를 확인하십시오 . .ipython/profile_default/startup/README시작 디렉토리가 작동하는 방식을 이해하려면를 참조하십시오 .


1

내 기본 ipython호출은

ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False

--pylab한동안 ipython옵션이었습니다. 그것은 수입 numpy과 (부품) matplotlib. 명시 적 .NET Framework를 사용하는 것을 선호하기 때문에 가져 오기를 --Inter...사용하지 않도록 옵션을 추가했습니다 .*np....

바로 가기, 별칭 또는 스크립트 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.