当我 `cd` 进入 python-skeleton 目录时,为什么 shell 返回 Python 错误回溯

Why shell returned a Python error traceback when I `cd` into python-skeleton dir

我在 OS X 10.10 上通过 HomeBrew cask 安装了 Pycharm。我听说 python-skeleton 很有用,所以 cd 进去看看它有什么。但是每次我输入 cd /opt/homebrew-cask/Caskroom/pycharm/4.5/PyCharm.app/Contents/helpers/python-skeletons/ 都会得到这个回溯:

Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 548, in <module>
    main()
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 527, in main
    known_paths = removeduppaths()
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 110, in removeduppaths
    dir, dircase = makepath(dir)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 80, in makepath
    dir = os.path.join(*paths)
AttributeError: 'module' object has no attribute 'path'

其他都行,只有cd进特殊目录才会出现

我正在使用 zsh 和 oh-my-zsh。按照@skyline75489 提到的双向搜索后,我发现我的 .zshrc 文件中的自动跳转配置有问题:

[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh

很简单,正是异常所说的:os模块没有属性pathpython-skeletonsa package called os,当你在 blahblah/python-skeletons 时,当前工作目录中的 os 包屏蔽了标准库中的 os 包。这是因为当前工作目录位于 sys.path 中的库路径之前,Python 查找模块的路径列表。

一般来说,拥有与 STL 模块或包同名的模块或包是相当糟糕的做法(除非它被设计为直接替换),但在这种情况下它就在那里,并且你对此无能为力。

只是不要 j 来自或进入该目录。如果您的 cdautojump 的函数或别名屏蔽,那么请改用 builtin cd