Coder Social home page Coder Social logo

macfsevents's Introduction

Overview

MacFSEvents is a Python library that provides thread-safe directory observation primitives using callbacks. It wraps the Mac OS X FSEvents API in a C-extension.

Requirements:

  • Mac OS X 10.5+ (Leopard)
  • Python 2.7+

This software was written by Malthe Borch <[email protected]>. The pyfsevents module by Nicolas Dumazet was used for reference.

image

Why?

At this time of writing there are four other libraries that integrate with the FSEvents API:

watchdog:

This library actually builds on the code in MacFSEvents (this project), but currently does not support Python 3 (though this should happen soon). It also includes shell utilities.

pyobjc-framework-FSEvents

These use the PyObjC bridge infrastructure which most applications do not need.

pyfsevents

Not thread-safe (API is not designed to support it).

fsevents

Obsolete bindings to the socket API by John Sutherland.

The MacFSEvents library provides a clean API and has full test coverage.

Note that pyfsevents has bindings to the file descriptor observation primitives. This is not currently implemented by the present library.

License

Made available as-is under the BSD License.

Usage

To observe a directory structure (recursively) under path, we set up an observer thread and schedule an event stream:

from fsevents import Observer
observer = Observer()
observer.start()

def callback(FileEvent):
    ...

from fsevents import Stream
stream = Stream(callback, path)
observer.schedule(stream)

Streams can observe any number of paths; simply pass them as positional arguments (or using the * operator):

stream = Stream(callback, *paths)

To start the observer in its own thread, use the start method:

observer.start()

To start the observer in the current thread, use the run method (it will block the thread until stopped from another thread):

observer.run()

The callback function will be called when an event occurs. Depending on the stream, the callback will have different signitures:

  1. the standard stream (with callback and paths) will call callback with parameters callback(path, mask) where path is the directory where a file changed and mask can be decoded using FS_FLAG* and FS_ITEM* constants1. a convenience class Mask has a __str__ function to get a text representation of the flags.
  2. the stream is created with ids = True keyword parameter. In this case the call is callback(path, mask, id). The id can be used in the since keyword parameter of another stream object to also recieve historic events (that happened before the stream became active)
  3. if file_events is kwarg set to True, a FileEvent instance is passed to the callback and has 3 attributes: mask, cookie and name. name parameter contains the path at which the event happened (may be a subdirectory) while mask parameter is the event mask. this mimicks inotify behaviour. see also below.

To stop observation, simply unschedule the stream and stop the observer:

observer.unschedule(stream)
observer.stop()

While the observer thread will automatically join your main thread at this point, it doesn't hurt to be explicit about this:

observer.join()

We often want to know about events on a file level; to receive file events instead of path events, pass in file_events=True to the stream constructor:

def callback(event):
    ...

stream = Stream(callback, path, file_events=True)

The event object mimick the file events of the inotify kernel extension available in newer linux kernels. It has the following attributes:

mask

The mask field is a bitmask representing the event that occurred.

cookie

The cookie field is a unique identifier linking together two related but separate events. It is used to link together an IN_MOVED_FROM and an IN_MOVED_TO event.

name

The name field contains the name of the object to which the event occurred. This is the absolute filename.

Note that the logic to implement file events is implemented in Python; a snapshot of the observed file system hierarchies is maintained and used to monitor file events.


  1. See FSEventStreamEventFlags for a reference. To check for a particular mask, use the bitwise and operator &.

macfsevents's People

Contributors

abarnert avatar axtl avatar happygts avatar jacebrowning avatar malthe avatar michilu avatar millerdev avatar nsfmc avatar pbronez avatar sandeepsukhani avatar thomasst avatar vulpeszerda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

macfsevents's Issues

raise IOError('Could not build the egg.')

Mac Os X 10.10
Xcode 6.01
Python 3.4.1

Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/Users/christianbarra/Dev/barrachri.github.io/.env/build/macfsevents/setup.py", line 4, in <module> use_setuptools()
File "/Users/christianbarra/Dev/barrachri.github.io/.env/build/macfsevents/distribute_setup.py", line 152, in use_setuptools return _do_download(version, download_base, to_dir, download_delay)
File "/Users/christianbarra/Dev/barrachri.github.io/.env/build/macfsevents/distribute_setup.py", line 132, in _do_download  _build_egg(egg, tarball, to_dir)
File "/Users/christianbarra/Dev/barrachri.github.io/.env/build/macfsevents/distribute_setup.py", line 123, in _build_egg raise IOError('Could not build the egg.')
OSError: Could not build the egg.

AttributeError: 'dict_keys' object has no attribute 'sort'

I am using MacFSEvents with sniffer. It seems that the recent 0.5 release caused a regression in Python 3.5:

env/bin/sniffer
Traceback (most recent call last):
  File "env/bin/sniffer", line 7, in <module>
    from sniffer import main
  File "<...>/env/lib/python3.5/site-packages/sniffer/__init__.py", line 26, in <module>
    from .scanner import Scanner
  File "<...>/env/lib/python3.5/site-packages/sniffer/scanner/__init__.py", line 34, in <module>
    _import('fsevents_scanner', 'FSEventsScanner')    # osx
  File "<...>/env/lib/python3.5/site-packages/sniffer/scanner/__init__.py", line 28, in _import
    mod = __import__(str(module), globals(), locals(), [cls], 1)
  File "<...>/env/lib/python3.5/site-packages/sniffer/scanner/fsevents_scanner.py", line 9, in <module>
    import fsevents
  File "<...>/env/lib/python3.5/site-packages/fsevents.py", line 47, in <module>
    class Mask(int):
  File "<...>/env/lib/python3.5/site-packages/fsevents.py", line 72, in Mask
    svals.sort()
AttributeError: 'dict_keys' object has no attribute 'sort'
make: *** [watch] Error 1

If I specifically install the previous release ($ pip install MacFSEvents==0.4), I do not see this issue.

Include License File in Package

Thanks for clarifying the license in #38. This license file needs to be included in the conda-forge package. Right now LICENSE.txt is not include in the PyPi package, so I'm pulling it separately. It would be better to have LICENSE.txt included on PyPi so it travels along with the code.

LICENSE.txt can be included in the package by a small modification to setup.py. Pull request imminent...

Memory leak when monitoring network mounts

I was monitoring "/Volumes" to detect usb devices being mounted/unmounted and noticed a significant memory leak in my application (roughly 3-5MB/sec).

I tracked it down to MacFSEvents and noticed it only seems to happen when a network mount is being monitored (it mounted with smb).

I've tried to find what is leaking but it appears to be in the C part of the code, I'd imagine _fsevents.loop

Cannot import v0.3.0 on OS X 10.8

$ pip install macfsevents
Downloading/unpacking macfsevents
  Downloading MacFSEvents-0.3.tar.gz
  Running setup.py egg_info for package macfsevents

Installing collected packages: macfsevents
  Running setup.py install for macfsevents
    gcc-4.2 not found, using clang instead
    building '_fsevents' extension
    clang -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _fsevents.c -o build/temp.macosx-10.6-intel-2.7/_fsevents.o
    clang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -isysroot /Developer/SDKs/MacOSX10.6.sdk -g build/temp.macosx-10.6-intel-2.7/_fsevents.o -o build/lib.macosx-10.6-intel-2.7/_fsevents.so -framework CoreFoundation -framework CoreServices

Successfully installed macfsevents
Cleaning up...
$ python -c 'import fsevents'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/millerdev/code/virtualenv/vx/lib/python2.7/site-packages/fsevents.py", line 5, in <module>
    from _fsevents import (
ImportError: dlopen(/Users/millerdev/code/virtualenv/vx/lib/python2.7/site-packages/_fsevents.so, 2): Symbol not found: _kFSEventStreamCreateFlagFileEvents
  Referenced from: /Users/millerdev/code/virtualenv/vx/lib/python2.7/site-packages/_fsevents.so
  Expected in: flat namespace
 in /Users/millerdev/code/virtualenv/vx/lib/python2.7/site-packages/_fsevents.so

OS X 10.8.2
Xcode 4.6
Python 2.7.3

FWIW, I was able to install MacFSEvents 0.2.8 and it seems to work.

Add License File

The README says that "[this software is] Made available as-is under the BSD License." but doesn't specify which BSD license applies. The Pypi metadata specifies the MIT license.

Could you add a LICENSE file with the text of your intended license? (I can do a pull request if you let me know which one you want)

I'm trying to package MacFSEvents for conda-forge, and the license issue is currently a roadblock

How to know when Observer is ready ?

Hello

I'm trying to develop software with your API. For some reason I want to know when the initialization of watchers is finished. Currently, I didn't find how to do that. First of all I wanted to know if it's possible, and if it's not I just added a boolean in Observer object and set it to true at the end of function run before loop(). This work but does this seem correct for you?

Thank you for your time and sorry for my bad English

Wrong events triggerd on first run

hi malthe,

first of all the new FileEvents are awesome. macfsevents is the best FSEvents lib available for python and mac.
i've noticed one small problem. each time i start my script and create a directory in the path i've added via Stream(), i'll get a list of all directories in the watch dir with a "IN_CREATED" mask. these directories already exist and aren't newly created.

i've figured out, that i have to add them to the "refs" variable in the snapshot function on every init. here's the small and dirty bugfix (append it to the end of the snapshot() function):

if os.path.isdir(path):
    refs[os.path.join(root, path)] = {}
    for name in os.listdir(os.path.join(root, path)):
        refs[path][name] = os.stat(os.path.join(path, name))

this is the testcase that raises the problem for me:

import time
import os
from fsevents import Stream, Observer

def callback(event):
    print(event)

stream = Stream(callback, '.', file_events=True)

observer = Observer()
observer.schedule(stream)
observer.start()

time.sleep(3)
os.mkdir('foobar')
time.sleep(3)

observer.stop()
observer.unschedule(stream)
observer.join()

cheers // marc

files in subfolders are not reported correctly

im happy to see some further development on this package, but it still does not report the fileevents if you drop in a folder with containing files. and all events for files in subfolders if the parent folder is moved, deleted, or modified.

import failure on python 3.5

With MacFSEvents 0.6 from PyPi:

$ python3.5 -c 'import fsevents'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/dan/.virtualenvs/pod/lib/python3.5/site-packages/fsevents.py", line 47, in <module>
    class Mask(int):
TypeError: nonempty __slots__ not supported for subtype of 'int'

"Exeption in thread"-Error, when a directory contains a German Umlaut and is made from the commandline with mkdir

OS X 10.7.4
python 2.7
macfsevents 0.2.8_0

When using macfsevents on OS X, I have the following problem: I get a an "Exeption in thread"-Error, when a directory contains a German Umlaut and is made from the commandline with mkdir.

Example:

  • I have an directory with the name "schräg"
  • when copying a file to it, macfsevents detects it and gets the following error:

Exception in thread Thread-1:
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 551, in bootstrap_inner
self.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/fsevents.py", line 44, in run
_fsevents.loop(self)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/fsevents.py", line 127, in __call

snapshot = self.snapshots[path]
KeyError: '/Volumes/Mac_Daten/test/schr\xc3\xa4g'

Important hint:

  • the error only occurs, when the above-named directory "schräg" is made on the commandline with "mkdir 'schräg'"
  • when making the directory "schräg" with the OS X Finder, all runs well!!

So there must be a difference (for macfsevents) between making a directory with mkdir and Finder.

Race conditions with snapshot

Assuming we have a somewhat deep directory structure at dir_a which has some directory dir_y under it. It is very easy to generate a KeyError by doing the following

% mv dir_a dir_new ; rm -rf dir_new/some/levels/here/dir_y

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/Library/Python/2.7/site-packages/fsevents.py", line 44, in run
    _fsevents.loop(self)
  File "/Library/Python/2.7/site-packages/fsevents.py", line 128, in __call__
    snapshot = self.snapshots[path]
KeyError: '/Users/xxxx/tmp/dir_new/some/levels/here/dir_y'

Installing 0.8 fails due to missing CHANGES.rst in the source distribution

An attempt to install macfsevents==0.8 fails due to a missing file error. It looks like CHANGES.rst is not included in the source distribution (it must be mentioned in MANIFEST.in).

  Downloading MacFSEvents-0.8.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/bb/n7t3rs157850byt_jfdcq9k80000gn/T/pip-build-amqza803/macfsevents/setup.py", line 22, in <module>
        long_description = "\n\n".join((read('README.rst'), read('CHANGES.rst'))),
      File "/private/var/folders/bb/n7t3rs157850byt_jfdcq9k80000gn/T/pip-build-amqza803/macfsevents/setup.py", line 8, in read
        with open(os.path.join(os.path.dirname(__file__), fname)) as f:
    FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/bb/n7t3rs157850byt_jfdcq9k80000gn/T/pip-build-amqza803/macfsevents/CHANGES.rst'

Add continuous integration on OSX

Travis CI is a good option for this.

Steps:

  • Grant Travis CI permissions
  • Add a .travis.yml configured for Python and OSX
  • Add a status badge

Is it possible to ensure streams a actually scheduled by the time the call returns?

Similar to #20 but subtly different. I'm having trouble with a race condition formed of the following:

Main thread:

  • Creates Observer
  • adds Stream
  • starts Observer thread
  • modifies a file

Observer thread:

Expected behaviour here might be for the observer to always be notified of the file modification. The stream is registered on the main thread before the file is modified. But because that will be cached in the python object and only registered with the OS library on a separate thread, the OS native library might not be informed of the stream until after it was modified.

It would be great if all schedule events could be in place by the time the .schedule method completes.

unchanged subdirectories get flagged as "created" (mask 256)

When I watch a folder with subdirectories inside it and then
create a new subdirectory or file inside the watched folder,
all the other, already existing but still unchanged subdirectories
get the fsevent mask 256, which means created.

E.g. if this is the folder I watch, incl. subdirs:

test -- subdir1
-- subdir2
-- subdir3

Then I copy the file 1.png into the test folder:

test -- 1.png
-- subdir1
-- subdir2
-- subdir3

The events I receive, now, are:

file name: /test/1.png

Mask: 256, Cookie: None

file name: /test/subdir2

Mask: 256, Cookie: None

file name: /test/subdir3

Mask: 256, Cookie: None

file name: /test/test/subdir1
Mask: 256, Cookie: None

This happens only the first time I copy something into a folder
after I start the module.

To me it looks as if the tool does the following:

The first time I copy something into a folder, it lists its
contents and keeps a reflection of that in memory.

As macfsevents doesn't know what the directory listing looked
like before the initial event, it marks all contained folders as
created (256). If there are files inside a folder, they only receive
an event if they are really changed.

Is this something that happens within macfsevents, or is this
something that happens on the Apple OS filesystem level?

`Mask.__str__` returns `None`

The Mask.__str__ method calculates the string version of the mask, but then doesn't return it, making the class useless.

Move on root folder.

Hi,

I was testing my application and I found a strange behavior.
Imagine that my root folder is /home/ and I have a file in folder /home/toto/ named file1.
If I do : "mv /home/toto/file1 /home/" macfsevent give me a delete and create event instead of move from, move to event.

Thanks for your help.

can't install MacFSEvents on OSX 10.6.8

I was just trying to install MacFSEvents on OSX 10.6.8, but it failed and
searches on a few combinations of the error messages didn't reveal anything,
e.g.

https://www.google.co.uk/search?q=%2BMacFSEvents+lipo%3A+can't+open+input+file

Here's my complete experience:

localhost:extractor samueljoseph$ pip install MacFSEvents
Downloading/unpacking MacFSEvents
  Downloading MacFSEvents-0.2.8.tar.gz
  Running setup.py egg_info for package MacFSEvents

Installing collected packages: MacFSEvents
  Running setup.py install for MacFSEvents
    building '_fsevents' extension
    gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386
-g -O2 -DNDEBUG -g -O3
-I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c
_fsevents.c -o build/temp.macosx-10.3-fat-2.7/_fsevents.o
    In file included from /usr/include/architecture/i386/math.h:626,
                     from /usr/include/math.h:28,
                     from
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyport.h:312,
                     from
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:58,
                     from _fsevents.c:1:
    /usr/include/AvailabilityMacros.h:108:14: warning: #warning Building for
Intel with Mac OS X Deployment Target < 10.4 is invalid.
    /usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as: assembler
(/usr/bin/../libexec/as/ppc/as or /usr/bin/../local/libexec/as/ppc/as) for
architecture ppc not installed
    Installed assemblers are:
    /usr/bin/../libexec/as/x86_64/as for architecture x86_64
    /usr/bin/../libexec/as/i386/as for architecture i386
    /usr/bin/../libexec/as/arm/as for architecture arm
    lipo: can't open input file:
/var/folders/Qw/Qw-XPFEpEdWNVgWEx3hqEE+++TI/-Tmp-//ccA5bt7l.out (No such
file or directory)
    error: command 'gcc-4.0' failed with exit status 1
    Complete output from command
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
-c "import
setuptools;__file__='/Users/samueljoseph/Code/twss/faq/extractor/build/MacFSEvents/setup.py';exec(compile(open(__file__).read().replace('\r\n',
'\n'), __file__, 'exec'))" install --single-version-externally-managed
--record
/var/folders/Qw/Qw-XPFEpEdWNVgWEx3hqEE+++TI/-Tmp-/pip-HLTJeH-record/install-record.txt:
    running install

running build

running build_py

creating build

creating build/lib.macosx-10.3-fat-2.7

copying fsevents.py -> build/lib.macosx-10.3-fat-2.7

running build_ext

building '_fsevents' extension

creating build/temp.macosx-10.3-fat-2.7

gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386 -g
-O2 -DNDEBUG -g -O3
-I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c
_fsevents.c -o build/temp.macosx-10.3-fat-2.7/_fsevents.o

In file included from /usr/include/architecture/i386/math.h:626,

                 from /usr/include/math.h:28,

                 from
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyport.h:312,

                 from
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:58,

                 from _fsevents.c:1:

/usr/include/AvailabilityMacros.h:108:14: warning: #warning Building for
Intel with Mac OS X Deployment Target < 10.4 is invalid.

/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as: assembler
(/usr/bin/../libexec/as/ppc/as or /usr/bin/../local/libexec/as/ppc/as) for
architecture ppc not installed

Installed assemblers are:

/usr/bin/../libexec/as/x86_64/as for architecture x86_64

/usr/bin/../libexec/as/i386/as for architecture i386

/usr/bin/../libexec/as/arm/as for architecture arm

lipo: can't open input file:
/var/folders/Qw/Qw-XPFEpEdWNVgWEx3hqEE+++TI/-Tmp-//ccA5bt7l.out (No such
file or directory)

error: command 'gcc-4.0' failed with exit status 1

//----------------------------------------
Command
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
-c "import
setuptools;__file__='/Users/samueljoseph/Code/twss/faq/extractor/build/MacFSEvents/setup.py';exec(compile(open(__file__).read().replace('\r\n',
'\n'), __file__, 'exec'))" install --single-version-externally-managed
--record
/var/folders/Qw/Qw-XPFEpEdWNVgWEx3hqEE+++TI/-Tmp-/pip-HLTJeH-record/install-record.txt
failed with error code 1 in
/Users/samueljoseph/Code/twss/faq/extractor/build/MacFSEvents
Storing complete log in /Users/samueljoseph/.pip/pip.log

Many thanks in advance for any insight.

KeyError crashes program

Here is the error:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/site-packages/MacFSEvents-0.8.dev0-py2.7-macosx-10.9-x86_64.egg/fsevents.py", line 133, in run
    loop(self)
  File "/usr/local/lib/python2.7/site-packages/MacFSEvents-0.8.dev0-py2.7-macosx-10.9-x86_64.egg/fsevents.py", line 244, in __call__
    snapshot = self.snapshots[path]
KeyError: '/Volumes/deliveries/test.com/fcDisk/Shared_Files/dhemme'

Any ideas? I've seen this several times.

Ctrl-C not working

when running an Observer either with run() or start(), the program can't be stopped e.g. by pressing Ctrl-C and Signal-handlers installed (for e.g. SIGINT or SIGTERM) are ignored.

install fails on OSX Mavericks 10.9.2

Python 2.7.5
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)

cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _fsevents.c -o build/temp.macosx-10.9-intel-2.7/_fsevents.o

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
error: command 'cc' failed with exit status 1

temporary workaround:
CFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install --user MacFSEvents

install macfsevents error

NameError: name 'sys_platform' is not defined

use_setuptools()

File "distribute_setup.py", line 152, in use_setuptools

return _do_download(version, download_base, to_dir, download_delay)

File "distribute_setup.py", line 132, in _do_download

_build_egg(egg, tarball, to_dir)

File "distribute_setup.py", line 123, in _build_egg

raise IOError('Could not build the egg.')

IOError: Could not build the egg.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.