2017-04-20 37 views
0

的Python 2.7與虛擬環境IPython中安裝(的Ubuntu 16.04.2(Xenial)LTS)無法運行IPython的nbconvert從Python2.7虛擬環境

當我在工作虛擬環境(在慶典 shell中運行source venv/bin/activate而在虛擬環境中的父目錄是後)我從慶典執行我的木星的筆記本電腦的轉換殼像這樣沒有問題:

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' 

更多信息來節省您的時間。

我已經試過:

  • 使用相同的路徑爲PYTHONPATH我從PyCharm運行/調試配置了。
  • 使用nbconvert如Python庫from this documentation
  • 試過os.system("ipython nbconvert…")
  • 纏繞有外殼腳本工作命令(ipython nbconvert…)和subprocess.check_outputos.system使用它。
  • 喝醉了,把我的頭撞在磚牆上。

而且最終總是向上與詛咒例外。

+0

在某處是否有一個名爲'cmd.py'的文件? –

+0

哦,我的!確實是的!將其移出項目解決了問題! – misanthrope

回答

0

轉貼作爲完整的答案:

有一個叫cmd.py的地方在那裏的Python是尋找它作爲一個導入的模塊文件。這隱藏了標準庫中的cmd module,該庫由IPython導入的pdb使用。當pdb試圖從cmd繼承一個類時,該類不在那裏。移動cmd.py讓它找到它需要的cmd模塊。

這是一個不幸的煩惱與Python - 大量的短詞已經被用作爲模塊的名稱,並使用他們自己生產的崩潰,與各種不同的錯誤。