I created a CLI module for my weekend project and called it "cmd.py".
This leads to the following exception:
/home/marcel/.virtualenvs/ultrabak/bin/python /home/marcel/git/ultrabak/ultrabak/cmd.py
Traceback (most recent call last):
File "/home/marcel/git/ultrabak/ultrabak/cmd.py", line 1, in <module>
import fire
File "/home/marcel/git/python-fire/fire/__init__.py", line 21, in <module>
from fire.core import Fire
File "/home/marcel/git/python-fire/fire/core.py", line 62, in <module>
from fire import completion
File "/home/marcel/git/python-fire/fire/completion.py", line 25, in <module>
from fire import inspectutils
File "/home/marcel/git/python-fire/fire/inspectutils.py", line 23, in <module>
import IPython
File "/home/marcel/.virtualenvs/ultrabak/lib/python3.5/site-packages/ipython-5.3.0-py3.5.egg/IPython/__init__.py", line 48, in <module>
from .core.application import Application
File "/home/marcel/.virtualenvs/ultrabak/lib/python3.5/site-packages/ipython-5.3.0-py3.5.egg/IPython/core/application.py", line 25, in <module>
from IPython.core import release, crashhandler
File "/home/marcel/.virtualenvs/ultrabak/lib/python3.5/site-packages/ipython-5.3.0-py3.5.egg/IPython/core/crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "/home/marcel/.virtualenvs/ultrabak/lib/python3.5/site-packages/ipython-5.3.0-py3.5.egg/IPython/core/ultratb.py", line 119, in <module>
from IPython.core import debugger
File "/home/marcel/.virtualenvs/ultrabak/lib/python3.5/site-packages/ipython-5.3.0-py3.5.egg/IPython/core/debugger.py", line 46, in <module>
from pdb import Pdb as OldPdb
File "/usr/lib/python3.5/pdb.py", line 135, in <module>
class Pdb(bdb.Bdb, cmd.Cmd):
AttributeError: module 'cmd' has no attribute 'Cmd'
After renaming it to "cli.py" everything works as expected. The reason is that the cmd module is added to the pythonpath if it is executed like this and covers python's cmd module. It works if the cmd module is executed as a submodule (python -m ultrabak.cmd or using entry_points).
As cmd.py could be a common name for a CLI, I'd suggest to add a note somewhere in the docs.
I created a CLI module for my weekend project and called it "cmd.py".
This leads to the following exception:
After renaming it to "cli.py" everything works as expected. The reason is that the cmd module is added to the pythonpath if it is executed like this and covers python's cmd module. It works if the cmd module is executed as a submodule (python -m ultrabak.cmd or using entry_points).
As cmd.py could be a common name for a CLI, I'd suggest to add a note somewhere in the docs.