Comments (3)
I read that article, too. The article is based on the idea that one uses cffi.verify()
, though. This will invoke a compiler and do all kinds of interesting magics.
We don't do all that, though. We merely cffi.dlopen()
, which needs no compiler and sidesteps most of the issues that make distribution difficult. To be honest, I have not yet understood why one would ever use cffi.verify()
instead of cffi.dlopen()
.
So, in our case, and if I understand this correctly, we only require the loaded library to be present when cffi.dlopen()
is called. Since the library is necessarily packaged outside of Python and pip, I don't see how we could improve our install experience within the confines of pip. Pip wheels, and the conda package manager might be interesting targets in addition to Windows bdists, but that has little to do with CFFI or setup.py.
from python-soundfile.
If I understand it correctly, when using verify()
, the compiler actually checks the definitions given in cdef()
and possible errors would show up during compilation. In our case dlopen()
opens the library and any errors will happen at runtime, probably leading to crashes.
Therefore, verify()
is safer, but it is also much harder to handle (as the blog post shows).
I've never had any problems regarding dlopen()
, please tell us if you do!
The compilation with verify()
might also yield a small performance gain, but as we make only very few calls to the library, this shouldn't be noticeable. I guess this is only relevant if library calls happen in tight Python loops, but that's probably a bad idea anyway.
@davidblewett: did you experience any troubles with installing/using PySound{File|Card}?
It would be great if you could test this an report back if everything works on your system.
What OS are you using?
If you're using Windows, it would be great if you could also test the alternative installation mechanism suggested in #88.
At no point in installing, using or developing PySound{File|Card} a compiler should ever be needed (assuming you have the dependencies already installed!).
from python-soundfile.
It has been awhile since I've been able to play with these 2 projects. I didn't realize the nuance of verify vs. dlopen, so this can be closed. I think I've gotten these 2 projects confused with some projects where I did see errors with cffi trying to compile something after installation time (and failing).
Sorry for the noise!
from python-soundfile.
Related Issues (20)
- numpy is a dependency, but this is not declared HOT 3
- Feature request: Support interleaved stereo data HOT 4
- buffer_read doesn't work in basic test HOT 2
- Soundfile read/write wav is not symmetric with default arguments HOT 3
- module 'soundfile' has no attribute 'SoundFileRuntimeError' HOT 5
- Value Error: array is too big when loading .flac file
- soundfile crashes when trying to export long .ogg file HOT 1
- soundfile.LibsndfileError: Error opening <_io.BytesIO object at 0x0000022B81C21850>: Format not recognised. HOT 2
- Cannot suppress warnings when decoding mp3
- Cannot open Ogg FLAC file: unknown error in flac decoder HOT 1
- miniforge3/lib/python3.9/site-packages/soundfile.py", line 1229, in _init_virtual_io def vio_get_filelen(user_data): MemoryError: Cannot allocate write+execute memory for ffi.callback(). You might be running on a system that prevents this. For more information, see https://cffi.readthedocs.io/en/latest/using.html#callbacks
- Cannot write Ogg files over 96 seconds long at 44.1 kHz HOT 4
- soundfile.info does not work on mp3 HOT 2
- soundfile.LibsndfileError: <exception str() failed> HOT 6
- How to save left and right channel in separate files? HOT 1
- soundfile.LibsndfileError: Error : unknown error in flac decoder. HOT 2
- "Format not recognised." for m4a files HOT 2
- soundfile.LibsndfileError: Error opening <tempfile._TemporaryFileWrapper object at 0x7feadae59070>: Format not recognised. HOT 2
- Part of mp3 is loaded. HOT 2
- unknown error in flac decoder HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-soundfile.