Сценарий Python не может получить доступ к импортированным файлам пакета из-за отсутствия разрешения - PullRequest
1 голос
/ 20 июня 2019

Мы недавно установили пакет pykakasi с Git на сервер Linux в BigData Cluster.

После установки я попробовал тестовую программу из «Readme» и получил эту ошибку.

Получено сообщение об ошибке:

PermissionError: [Errno 13] Permission denied: '/opt/python/python35/lib/python3.5/site-packages/pykakasi/kanwadict3.db/data'

Я пытался исследовать все проблемы, о которых сообщалось в Git. Кроме того, искал этот и другие форумы для возможного решения, но ничего не помогло.

Программа, которую я тестировал:

import pykakasi

text = u"かな漢字交じり文"
kakasi = pykakasi.kakasi()
kakasi.setMode("H","a") # Hiragana to ascii, default: no conversion
kakasi.setMode("K","a") # Katakana to ascii, default: no conversion
kakasi.setMode("J","a") # Japanese to ascii, default: no conversion
kakasi.setMode("r","Hepburn") # default: use Hepburn Roman table
kakasi.setMode("s", True) # add space, default: no separator
kakasi.setMode("C", True) # capitalize, default: no capitalize
conv = kakasi.getConverter()
result = conv.do(text)
print(result)

Ожидаемый результат: kana Kanji Majiri Bun

Подробная ошибка:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/python/python35/lib/python3.5/site-packages/pykakasi/kakasi.py", line 99, in getConverter
    self._conv["J"] = J2(self._mode["J"], method=self._option["r"])
  File "/opt/python/python35/lib/python3.5/site-packages/pykakasi/j2.py", line 48, in __init__
    self._kanwa = kanwa()
  File "/opt/python/python35/lib/python3.5/site-packages/pykakasi/kanwa.py", line 32, in __init__
    self._kanwadict = dbm.open(dictpath, 'r')
  File "/opt/python/python35/lib/python3.5/site-packages/semidbm/db.py", line 355, in open
    return _SemiDBMReadOnly(filename, **kwargs)
  File "/opt/python/python35/lib/python3.5/site-packages/semidbm/db.py", line 40, in __init__
    self._load_db()
  File "/opt/python/python35/lib/python3.5/site-packages/semidbm/db.py", line 49, in _load_db
    self._data_fd = os.open(self._data_filename, compat.DATA_OPEN_FLAGS)
PermissionError: [Errno 13] Permission denied: '/opt/python/python35/lib/python3.5/site-packages/pykakasi/kanwadict3.db/data'

1 Ответ

0 голосов
/ 20 июня 2019

У меня раньше была похожая проблема, я делал то, что получал импортированные пакеты в моей локальной сети, например,

  • ~/myLocal/code.py
  • ~/myLocal/package/... -> содержитпакет, который используется в коде.

Для этого вы можете использовать что-то из здесь , чтобы установить желаемый пакет по произвольному пути.Или найдите другой способ добиться этого.В конце вы можете просто обратиться к этому пакету с указанием пути, как указано здесь

Что-то вроде;

# code.py
import package.targetPackage as targetPackage
...
...