我有一个 Python 2.7 的虚拟环境,安装了 ipython (Ubuntu 16.04.2(Xenial)LTS。)
当我在虚拟环境中工作时(在虚拟环境的父目录中运行 bash shell中的source venv/bin/activate
之后)我执行jupiter的转换没有问题来自 bash shell的笔记本如下:
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'
有关节省时间的更多信息。
我试过了:
os.system("ipython nbconvert…")
。ipython nbconvert…
)并在subprocess.check_output
和os.system
中使用它。总是最终被那个被诅咒的例外所困扰。
答案 0 :(得分:0)
重新作为完整性的答案:
在某个地方有一个名为cmd.py
的文件,其中Python将其视为可导入模块。这隐藏了标准库中的cmd module,它由IPDthon导入的pdb使用。当pdb试图从cmd
继承一个类时,那个类就不存在了。移动cmd.py
可以让它找到所需的cmd模块。
这对Python来说是一个令人遗憾的烦恼 - 许多短字已经被用作模块名称,并且自己使用它们会产生崩溃,并且会出现各种各样的错误。