コンテキスト:私は約1年前にOSXを使い始めましたが、私は一種のねじれたPythonインストールがありました。つまり、私はシステムのpythonを使っていて、sudoを使ってパッケージをインストールしました。さて、私は新鮮なOSXのインストールから始まり、それを正しい方法でしようとしています。私はbrewからpythonとpython3をインストールし、可能な限りpython3を使用しようとしています。私の.pythonrcファイルが非対話型プログラムで実行されているのはなぜですか?
問題:私は.pythonrcファイルを持っています。これは一般的に使われているパッケージのほんの一握りをインポートしています - ほとんどは標準のlib、いくつかの一般的で非標準のパッケージ、以前は、このファイルは対話シェルを起動したときにのみ実行されていました。今、brew pythonを使うときは、私がPythonプログラムを実行するたびに実行されます。
私はrcファイルの理解に若干のギャップがある必要があります - 私はその目的が特にインタラクティブな使用のためだと思っていました。それでもシステムPythonを使用すると、rcファイルは使用されません。システムのpython(2.7.10/usr/bin/python)とbrew python(2.7.12/usr/local/bin/python; 3.5.2(/ usr/local/bin/python3)にあります。 rcファイルからprintステートメント以外のすべてを削除した場合の動作は同じです。
編集:ipdbをインポートしているので、rcファイルが実行されていることがわかりました。これは理にかなっていますが、私はそれがなぜPythonの環境やバージョンで起こるのか、他のものではないのかまだ分かりません。
編集:https://github.com/gotcha/ipdb/blob/master/ipdb/main.py#L44この行は失敗します。これが何かを意味するかどうかは不明です。 .pythonrc内から
のフルスタックトレース:
File "hello.py", line 1, in <module>
from ipdb import set_trace
File "/usr/local/lib/python2.7/site-packages/ipdb/__init__.py", line 7, in <module>
from ipdb.__main__ import set_trace, post_mortem, pm, run # noqa
File "/usr/local/lib/python2.7/site-packages/ipdb/__main__.py", line 51, in <module>
ipapp.initialize([])
File "<decorator-gen-109>", line 2, in initialize
File "/usr/local/lib/python2.7/site-packages/traitlets/config/application.py", line 74, in catch_config_error
return method(app, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/IPython/terminal/ipapp.py", line 315, in initialize
self.init_code()
File "/usr/local/lib/python2.7/site-packages/IPython/core/shellapp.py", line 263, in init_code
self._run_startup_files()
File "/usr/local/lib/python2.7/site-packages/IPython/core/shellapp.py", line 342, in _run_startup_files
self._exec_file(python_startup)
File "/usr/local/lib/python2.7/site-packages/IPython/core/shellapp.py", line 328, in _exec_file
raise_exceptions=True)
File "/usr/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2469, in safe_execfile
self.compile if kw['shell_futures'] else None)
File "/usr/local/lib/python2.7/site-packages/IPython/utils/py3compat.py", line 288, in execfile
builtin_mod.execfile(filename, *where)
File "~/.pythonrc", line 57, in <module>
import traceback; traceback.print_stack()
'ipapp.initialize([])'があり、 'start_ipython'はありません。 'get_ipython'が失敗した後に起こる' except'の内部で 'initialize'呼び出しが起こっています。これは参考になりますが、私はそれが何を意味するのかはよく分かりません... – monguin
これは、IPythonがまだロードされていないことを意味します。完全なスタックトレースを投稿できますか? – valhallasw
上記スタックトレースが追加されました。 – monguin