I am calling the python script with the flair
package with a www-data
user (no sudo
rights). The models are in path for which that user has access rights, which I have set flair.cache_root = Path("tools/flair")
However, when I run the script with that user I get a Permission Error:
tagger = MultiTagger.load([\\\"flair/ner-german-large\\\", \\\"de-pos\\\"])\
File \\\"/usr/local/lib/python3.7/dist-packages/flair/models/sequence_tagger_model.py\\\", line 1330, in load\
model = SequenceTagger.load(model_name)\
File \\\"/usr/local/lib/python3.7/dist-packages/flair/nn.py\\\", line 88, in load\
state = torch.load(f, map_location='cpu')\
File \\\"/usr/local/lib/python3.7/dist-packages/torch/serialization.py\\\", line 594, in load\
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)\
File \\\"/usr/local/lib/python3.7/dist-packages/torch/serialization.py\\\", line 853, in _load\
result = unpickler.load()\
File \\\"/usr/local/lib/python3.7/dist-packages/flair/embeddings/token.py\\\", line 1297, in __setstate__\
state_dict=d[\\\"model_state_dict\\\"],\
File \\\"/usr/local/lib/python3.7/dist-packages/flair/embeddings/token.py\\\", line 818, in __init__\
self.tokenizer: PreTrainedTokenizer = AutoTokenizer.from_pretrained(model, **kwargs)\
File \\\"/usr/local/lib/python3.7/dist-packages/transformers/models/auto/tokenization_auto.py\\\", line 435, in from_pretrained\
return tokenizer_class_fast.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)\
File \\\"/usr/local/lib/python3.7/dist-packages/transformers/tokenization_utils_base.py\\\", line 1680, in from_pretrained\
user_agent=user_agent,\
File \\\"/usr/local/lib/python3.7/dist-packages/transformers/file_utils.py\\\", line 1279, in cached_path\
local_files_only=local_files_only,\
File \\\"/usr/local/lib/python3.7/dist-packages/transformers/file_utils.py\\\", line 1426, in get_from_cache\
os.makedirs(cache_dir, exist_ok=True)\
File \\\"/usr/lib/python3.7/os.py\\\", line 211, in makedirs\
makedirs(head, exist_ok=exist_ok)\
File \\\"/usr/lib/python3.7/os.py\\\", line 211, in makedirs\
makedirs(head, exist_ok=exist_ok)\
File \\\"/usr/lib/python3.7/os.py\\\", line 221, in makedirs\
mkdir(name, mode)\
PermissionError: [Errno 13] Permission denied: '/root/.cache'\
Can I avoid using /root/.cache
? I don't want to edit the read-write rights of that directory. If I run the script as root
it works fine. How do I run it as the other user? I am running it on Ubuntu.
The error is caused by the transformer model that flair
loads. The cache directory for transformers has to be specified in additional by setting the environment variable TRANSFORMERS_CACHE=/path/to/transformers