When I attempt to execute xattr in Terminal, I get

Traceback (most recent call last):
  File "/usr/bin/xattr-2.7", line 33, in <module>
    import xattr
ImportError: No module named xattr

What's going on here? I thought xattr was part of Darwin. Is xattr written in Python? Does it require a Python package to be installed on my system?

有帮助吗?

解决方案

The file that is executed when you run the command xattr is /usr/bin/xattr which is a python script that works out what version of python you have and then executes /usr/bin/xattr-2.7 for python 2.7. This script is also python and includes a import xattr to import the python module xattr from the Apple installed python libraries

其他提示

Was your /Library/Python/2.7 directory deleted by any chance? Some scripts look for /Library/Python/2.7/site-packages/Extras.pth.

On my Mac, this file contains a couple of lines:

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC

xattr itself is in the first directory above. I faced the same problem today and realized I'd inadvertently deleted /Library/Python/2.7 earlier today thinking it was something else. Xattr went nuts, restoring this directory fixed it.

If you have a version of Python installed with Homebrew, try unlinking it.

brew unlink python

/usr/local/bin/xattr uses the version of Python 3 suggested to it by env. Brew overrides this, but does not include the xattr library, causing this issue.

许可以下: CC-BY-SA归因
不隶属于 apple.stackexchange
scroll top