Why is 'xattr' not working?
-
30-09-2020 - |
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?
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.