2017-04-20 10 views
0

をIPythonのnbconvertを実行できません(Ubuntuの16.04.2(Xenial)LTS。)インストール</strong> ipython <strong>と</strong>のPython 2.7私は<strong>の仮想環境を持っているPython2.7仮想環境から

私が働いています仮想環境(仮想環境の親ディレクトリにありながらsource venv/bin/activate中のbashシェルを実行した後に)私はそうのようなのbashシェルから私の木星のノートPCの変換を実行する何の問題もない:

ipython nbconvert --to html --execute my_notes.ipynb --stdout > /tmp/report.html 

しかし、ときに私はsubprocessを使用して、ファブリックのタスクからそのコマンドを呼び出すようにしようとしている:

command = ['ipython', 'nbconvert', '--to', 'html', '--execute', notebook_path, '--stdout'] 
output = subprocess.check_output(command, 
           cwd=os.environ['PYTHONPATH'], 
           env=os.environ.copy()) 

それは常に私はその理由を見つけることができません。この例外で失敗します

Traceback (most recent call last): 
    File "/opt/backend/venv/bin/ipython", line 7, in <module> 
    from IPython import start_ipython 
    File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module> 
    from .core.application import Application 
    File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/application.py", line 25, in <module> 
    from IPython.core import release, crashhandler 
    File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/crashhandler.py", line 28, in <module> 
    from IPython.core import ultratb 
    File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/ultratb.py", line 119, in <module> 
    from IPython.core import debugger 
    File "/opt/backend/venv/local/lib/python2.7/site-packages/IPython/core/debugger.py", line 46, in <module> 
    from pdb import Pdb as OldPdb 
    File "/usr/lib/python2.7/pdb.py", line 59, in <module> 
    class Pdb(bdb.Bdb, cmd.Cmd): 
AttributeError: 'module' object has no attribute 'Cmd' 

詳細あなたの時間を節約するための情報。

私が試してみた:

  • を私はPyCharm実行/デバッグの構成から得たとしてPYTHONPATHに同じパスを使用しました。
  • nbconvertをPythonライブラリfrom this documentationとして使用しています。
  • 試したos.system("ipython nbconvert…")
  • シェルスクリプトを使用して作業コマンド(ipython nbconvert…)をラップし、subprocess.check_outputおよびos.systemで使用しました。
  • 酔っ払い、レンガの壁に頭を叩きます。

いつもその呪われた例外で終わります。

+0

どこかに 'cmd.py'というファイルがありますか? –

+0

ああ私!確かにそうです!それをプロジェクトから移して問題を解決しよう! – misanthrope

答えて

0

再ポストは、完全性についての答えとして:

Pythonがインポート可能なモジュールとしてそれを見つけたcmd.pyどこかというファイルがありました。これは標準ライブラリーのcmd moduleをシャドーイングしていました。これはpdbによって使用されています.pdbはIPythonをインポートします。 pdbがクラスをcmdからサブクラス化しようとしたとき、そのクラスはそこにはありませんでした。 cmd.pyを移動することで、必要なcmdモジュールを見つけることができます。

これはPythonの残念なことに厄介なことです。短い単語がモジュール名としてすでに使用されています。これらを使用すると、さまざまなエラーが発生し、クラッシュが発生します。

関連する問題