Question

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?

Was it helpful?

Solution

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

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with apple.stackexchange
scroll top