2012-12-07 18 views
28

पर NumPy site.cfg तर्कों की आपूर्ति करना मैं इंटेल के मैथ कर्नेल लाइब्रेरी के विरुद्ध निर्मित न्यूमपी का उपयोग कर रहा हूं। मैं virtualenv का उपयोग करता हूं, और आम तौर पर संकुल को स्थापित करने के लिए पीआईपी का उपयोग करता हूं।पाइप

हालांकि, एमकेएल पुस्तकालयों को खोजने के लिए न्यूमपी के लिए, इसे संकलित करने से पहले NumPy स्रोत निर्देशिका में साइट.cfg फ़ाइल बनाना आवश्यक है, फिर मैन्युअल रूप से निर्माण और स्थापित करें। मैं इस पूरी प्रक्रिया को स्क्रिप्ट कर सकता था, लेकिन मैं एक आसान समाधान की उम्मीद कर रहा था।

मेरे पास एक मानक साइट.cfg फ़ाइल है जिसका उपयोग इस उद्देश्य के लिए संस्करण नियंत्रण के तहत किया जा सकता है। क्या कोई पाइप कमांड लाइन विकल्प है जो पैकेज बनाने से पहले किसी विशेष फ़ाइल को स्रोत निर्देशिका में कॉपी करने के लिए कहेंगे?

वैकल्पिक रूप से, क्या कोई पर्यावरण चर है जिसे साइट.cfg फ़ाइल में लाइब्रेरी पथ की आपूर्ति करने के बजाय सेट किया जा सकता है? यहां साइट.cfg फ़ाइल है जिसका मैं उपयोग करता हूं। इसे लगभग Intel's site से लगभग क्रियापद लिया गया था।

[mkl] 
library_dirs = /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64 
include_dirs = /opt/intel/composer_xe_2013.1.117/mkl/include 
mkl_libs = mkl_rt 
lapack_libs = 

संदर्भ के लिए, मैं उबंटू, पायथन 2.7, और न्यूपी 1.6 चला रहा हूं।

उत्तर

26

स्रोत (https://github.com/numpy/numpy/blob/master/site.cfg.example) से:

easy_install की तरह स्वत: स्थापना की सहायता करने के लिए, उपयोगकर्ता के घर निर्देशिका भी फ़ाइल ~/.numpy-site.cfg के लिए जाँच की जाएगी।

क्या यह एक व्यावहारिक समाधान है? आपको अभी भी वैश्विक .numpy-site.cfg के साथ होम निर्देशिकाओं को प्रीलोड करना होगा, लेकिन इसके बाद आपको बिल्ड या इंस्टॉलेशन के साथ मकसद नहीं करना पड़ेगा।

+2

हाँ, यह निश्चित रूप से काम कर सकता है। धन्यवाद। हालांकि, यह देखने के लिए कि क्या कोई आसान समाधान के साथ आता है, मैं इसे थोड़ी देर के लिए छोड़ दूंगा। – joshayers

+0

@joshayers आपने अपना '~/.numpy-site.cfg' कैसे लिखा? मुझे एससीपीई के लिए एमकेएल के बीएलएएस प्रदान करने में कोई भाग्य नहीं है। Http://stackoverflow.com/q/22067761/688080 – ziyuang

+0

अतिरिक्त के रूप में, मैं 'scikits.audiolab' इंस्टॉल करना चाहता था इसलिए मैंने 'site.cfg'' के अंतर्गत वाली पंक्तियां' ~/.numpy-site.cfg' में डाल दीं। https://github.com/cournape/audiolab/issues/7 से – foxx1337

6

मैंने इसे स्वचालित करने के लिए एक स्क्रिप्ट को एक साथ रखा। यहां यह है, अगर यह किसी और की मदद कर सकता है। मैंने इसे पायथन 2.7 में परीक्षण किया है, लेकिन इसे बिना किसी महत्वपूर्ण संशोधन के कहीं और काम करना चाहिए।

from __future__ import unicode_literals 

import io 
import os.path 
import re 
import subprocess 
import urllib2 

# This downloads, builds, and installs NumPy against the MKL in the 
# currently active virtualenv 

file_name = 'numpy-1.6.2.tar.gz' 
url = ('http://sourceforge.net/projects/numpy/files/NumPy/1.6.2/' 
     'numpy-1.6.2.tar.gz/download') 

def main(): 

    # download NumPy and unpack it 
    file_data = urllib2.urlopen(url).read() 
    with io.open(file_name, 'wb') as fobj: 
     fobj.write(file_data) 
    subprocess.check_call('tar -xvf {0}'.format(file_name), shell=True) 
    base_name = re.search(r'(.*)\.tar\.gz$', file_name).group(1) 
    os.chdir(base_name) 

    # write out a site.cfg file in the build directory 
    site_cfg = (
     '[mkl]\n' 
     'library_dirs = /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64\n' 
     'include_dirs = /opt/intel/composer_xe_2013.1.117/mkl/include\n' 
     'mkl_libs = mkl_rt\n' 
     'lapack_libs =\n') 
    with io.open('site.cfg', 'wt', encoding='UTF-8') as fobj: 
     fobj.write(site_cfg) 

    # build and install NumPy 
    subprocess.check_call('python setup.py build', shell=True) 
    subprocess.check_call('python setup.py install', shell=True) 


if __name__ == '__main__': 
    main()