intake / intake/python-snappy

IOError on Python 2.7 / No such directory __pycache__/

オープン
#49 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
490
フォーク
104
PR マージ指標
30日以内にマージされた PR はありません

説明

I try to use snappy which use cffi with a non-root user that can't create the __pycache__/ dir.
I got :
```
STDERR: Traceback (most recent call last):
File "/opt/graphite/pypy/bin/django-admin", line 11, in
sys.exit(execute_from_command_line())
File "/opt/graphite/pypy/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/opt/graphite/pypy/site-packages/django/core/management/__init__.py", line 302, in execute
settings.INSTALLED_APPS
File "/opt/graphite/pypy/site-packages/django/conf/__init__.py", line 55, in __getattr__
self._setup(name)
File "/opt/graphite/pypy/site-packages/django/conf/__init__.py", line 43, in _setup
self._wrapped = Settings(settings_module)
File "/opt/graphite/pypy/site-packages/django/conf/__init__.py", line 99, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/opt/pypy/pypy-5.7.1-linux_x86_64-portable/lib-python/2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/opt/graphite/webapp/graphite/settings.py", line 160, in
from graphite.local_settings import * # noqa
File "/opt/graphite/webapp/graphite/local_settings.py", line 53, in
from graphite.local_settings_dynamic import *
File "/opt/graphite/webapp/graphite/local_settings_dynamic.py", line 1, in
from biggraphite.plugins import graphite
File "/opt/graphite/pypy/site-packages/biggraphite/plugins/graphite.py", line 30, in
from biggraphite import graphite_utils
File "/opt/graphite/pypy/site-packages/biggraphite/graphite_utils.py", line 17, in
from biggraphite import utils as bg_utils
File "/opt/graphite/pypy/site-packages/biggraphite/utils.py", line 22, in
from biggraphite.drivers import cassandra as bg_cassandra
File "/opt/graphite/pypy/site-packages/biggraphite/drivers/cassandra.py", line 34, in
from cassandra import cluster as c_cluster
File "/opt/graphite/pypy/site-packages/cassandra/cluster.py", line 46, in
from cassandra.connection import (ConnectionException, ConnectionShutdown,
File "/opt/graphite/pypy/site-packages/cassandra/connection.py", line 80, in
import snappy
File "/opt/graphite/pypy/site-packages/snappy.py", line 50, in
from snappy_cffi import UncompressError, compress, decompress, \
File "/opt/graphite/pypy/site-packages/snappy_cffi.py", line 169, in
''', libraries=["snappy"])
File "/opt/pypy/pypy-5.7.1-linux_x86_64-portable/lib_pypy/cffi/api.py", line 438, in verify
lib = self.verifier.load_library()
File "/opt/pypy/pypy-5.7.1-linux_x86_64-portable/lib_pypy/cffi/verifier.py", line 113, in load_library
self._write_source()
File "/opt/pypy/pypy-5.7.1-linux_x86_64-portable/lib_pypy/cffi/verifier.py", line 202, in _write_source
with open(self.sourcefilename, "w") as fp:
IOError: [Errno 2] No such file or directory: '/opt/graphite/pypy/site-packages/__pycache__/_cffi__g762f05ffx6bf5342b.c'
```

As far as I understand, it calls a deprecated method of cffi (http://cffi.readthedocs.io/en/latest/whatsnew.html?#v1-0-0).
A workaround would be to create __pycache__/ directory at the installation as root.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Start in snappy_cffi.py around the cffi verify call, then compare it with the cffi API referenced in the issue and the verifier.py traceback. Reproduce the non-root Python 2.7 installation case; done means importing snappy no longer fails when __pycache__ does not already exist.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。