Được rồi, vì vậy tôi muốn thực hiện một số xử lý tín hiệu cơ bản trong Python và tìm thấy thư viện tuyệt vời này được gọi là scikits.audiolab
.scikits.audiolab trên Ubuntu Oneiric - ImportError: Không có module _sndfile
Không tìm thấy PPA ở bất cứ đâu. Oh well. Tôi nghĩ tôi có thể cài đặt nó trên máy chủ Oneiric Ubuntu của tôi bằng cách đơn giản
sudo aptitude install libsndfile-dev
và sau đó
sudo easy_install scikits.audiolab
này, tuy nhiên, thất bại với
error: sndfile (http://www.mega-nerd.com/libsndfile/) library not found.
Directories to search for the libraries can be specified in the
site.cfg file, in section [sndfile].
Wtf? OK, đã truy vấn danh sách tệp libsndfile1-dev
:
[email protected] ~ $ apt-file list libsndfile1-dev
libsndfile1-dev: /usr/include/sndfile.h
libsndfile1-dev: /usr/include/sndfile.hh
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.a
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.la
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.so
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/sndfile.pc
[...]
Lạ, thư viện đi vào thư mục thư viện không chuẩn? Máy đóng gói ngu ngốc.
Ồ tốt. Tải về các nguồn cho scikits.audiolab
, đã viết một site.cfg
như thế này:
[sndfile]
include_dirs = /usr/include
library_dirs = /usr/lib/x86_64-linux-gnu/
sndfile_libs = sndfile
Bây giờ python setup.py build
và sudo setup.py install
kết thúc thành công.
Tiếp theo, bắn lên một vỏ Python, cố gắng from scikits.audiolab import sndfile
:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "scikits/audiolab/__init__.py", line 25, in <module>
from pysndfile import formatinfo, sndfile
File "scikits/audiolab/pysndfile/__init__.py", line 1, in <module>
from _sndfile import Sndfile, Format, available_file_formats, \
ImportError: No module named _sndfile
Nhưng:
>> sys.path
['',
'/usr/bin',
'/usr/lib/pymodules/python2.7',
'/usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_64.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/IPython/Extensions',
u'/home/japsu/.ipython']
Và _sndfile.so
tìm thấy tại /usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_64.egg/scikits/audiolab/pysndfile/_sndfile.so
.
Vì vậy, câu hỏi của tôi là,
- Wtf đang xảy ra? Tại sao python không tìm thấy
_sndfile.so
? - Có ai đã sử dụng thành công
scikits.audiolab
trong năm 2011 trên bản phân phối Linux 2011 không? Bạn đã làm nó như thế nào? - Có thư viện thay thế nào tốt để đọc các tệp WAV HUGE (như, 10 GB/8 giờ) chunk bằng đoạn vào NumPy không?