pythonまたはipythonインタープリターに入るときにモジュールを自動的にインポートする


119

入力している import numpy as npPythonインタープリターを起動するたびに、ほとんど毎回ていることに気づきました。numpyが自動的にインポートされるようにPythonまたはipythonインタープリターを設定するにはどうすればよいですか?

回答:


70

環境変数PYTHONSTARTUPを使用します。公式ドキュメントから:

これが読み取り可能なファイルの名前である場合、そのファイルのPythonコマンドは、最初のプロンプトが対話モードで表示される前に実行されます。このファイルは、対話型コマンドが実行されるのと同じ名前空間で実行されるため、ファイル内で定義またはインポートされたオブジェクトは、対話型セッションで修飾なしで使用できます。

したがって、importステートメントを使用してPythonスクリプトを作成し、環境変数にそれを指定するだけです。そうは言っても、「明示的は常に暗黙的よりも優れている」ことを忘れないでください。したがって、本番スクリプトではこの動作に依存しないでください。

Ipythonの場合、ipython_configファイルの作成方法に関するこのチュートリアルを参照しください


@mklauber、ありがとうございます。ただし、承認されたソリューションは廃止されました。しかし、それは私の編集を刺激しました。@ OP:編集済みの回答をご覧ください
Dhara

3
この記事の執筆時点での@ user545424(ipython 1.1.0)はPYTHONSTARTUPもサポートしています。
pflaquerre 2014年

設定env PYTHONSTARTUP="~/.startup.py"がうまくいかなかった
Seanny123 '25

export PYTHONSTARTUP=~/.python_shell_startup.py変数を設定するためのメモ。
PallavBakshi

77

ipythonの場合、これを実現するには2つの方法があります。どちらにも、にある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/
ピーター・

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はシェルの起動時にそれを使用します。

印刷ステートメントがそこにあるので、シェルを起動すると、それが有効であること、およびすでにインポートされているものがあることを通知します。ppショートカットはあまりにも本当に便利です...


Linuxでは動作しませんでした。Pythonにホームディレクトリなどを探すように指示する必要がありますか?
Seanny123 2015年

おっと:重要なステップを忘れた:私はそれを追加しました:PYTHONSTARTUPを定義します
Ned Batchelder

~代わりに$HOME機能するかどうかはわかりませんが、この相対パスの代わりに、MacOS、fish、python3で絶対パスを使用する必要がありました。
rien333

@Ned Batchelder、ありがとう、これは私が探していたものです。副質問、私はこれをWindowsで使用しており、ppショートカットが機能していません。アドバイスしていただけますか?>>> pp <function pprint at 0x0000020DAF90C8C8> >>> pp()トレースバック(最後の最新の呼び出し):ファイル "<stdin>"、1行目、<module> TypeError:pprint()missing 1必須の位置引数: 'object' >>>
Forever Learner

5

ravenac95が 提案するようなカスタム起動スクリプトを作成することは、ほとんどの場合に最適な一般的な答えですが、を使用したい状況では機能しませんfrom __future__ import X。Python 2.xで作業することがあるが、最新の除算を使用したい場合、これを行う方法は1つだけです。プロファイルを作成したら、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を呼び出すことができますが、でpython pynpのみを引き続き使用できますpython。Pythonスクリプトの動作はそのままです。


PYTHONSTARTUP対話モードでのみ呼び出されるので、Pythonスクリプトの動作は変更されません。エイリアスは、ファイルを参照して作成することができますalias pynp='PYTHONSTARTUP="~/.startup.py" python'
F.Raab

2

通常のPythonスクリプト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ます。明示的なを使用したいので--Inter...*インポートを使用しないようにオプションを追加しましたnp....

これは、ショートカット、エイリアス、またはスクリプトにすることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.