Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOError on Python 2.7 / No such directory __pycache__/ #49

Open
Thib17 opened this issue Jun 1, 2017 · 1 comment
Open

IOError on Python 2.7 / No such directory __pycache__/ #49

Thib17 opened this issue Jun 1, 2017 · 1 comment

Comments

@Thib17
Copy link

Thib17 commented Jun 1, 2017

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 <module>
        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 <module>
        from graphite.local_settings import *  # noqa
      File "/opt/graphite/webapp/graphite/local_settings.py", line 53, in <module>
        from graphite.local_settings_dynamic import *
      File "/opt/graphite/webapp/graphite/local_settings_dynamic.py", line 1, in <module>
        from biggraphite.plugins import graphite
      File "/opt/graphite/pypy/site-packages/biggraphite/plugins/graphite.py", line 30, in <module>
        from biggraphite import graphite_utils
      File "/opt/graphite/pypy/site-packages/biggraphite/graphite_utils.py", line 17, in <module>
        from biggraphite import utils as bg_utils
      File "/opt/graphite/pypy/site-packages/biggraphite/utils.py", line 22, in <module>
        from biggraphite.drivers import cassandra as bg_cassandra
      File "/opt/graphite/pypy/site-packages/biggraphite/drivers/cassandra.py", line 34, in <module>
        from cassandra import cluster as c_cluster
      File "/opt/graphite/pypy/site-packages/cassandra/cluster.py", line 46, in <module>
        from cassandra.connection import (ConnectionException, ConnectionShutdown,
      File "/opt/graphite/pypy/site-packages/cassandra/connection.py", line 80, in <module>
        import snappy
      File "/opt/graphite/pypy/site-packages/snappy.py", line 50, in <module>
        from snappy_cffi import UncompressError, compress, decompress, \
      File "/opt/graphite/pypy/site-packages/snappy_cffi.py", line 169, in <module>
        ''', 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.

@martindurant
Copy link
Member

Creating anything as root seems like a bad idea, many users will install in user-only land.

Updating the code to use the newer CFFI API seems very doable, but I'm surprised that the pycache directory ends up there, where these directories are known to pop up in various places with other normal usage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants