2012-03-22 25 views
26

पर चलने वाली सिस्सी चल रही है, मुझे नपुपी और मैटलप्लिबिक हेरोोकू पर चल रहा है, और मैं भी सिसि को स्थापित करने की कोशिश कर रहा हूं। हालांकि, Scipy को स्थापित करने के लिए BLAS [1] की आवश्यकता होती है, जो हेरोकू प्लेटफ़ॉर्म पर प्रस्तुत नहीं होती है। हेरोकू समर्थन से संपर्क करने के बाद, उन्होंने मुझे बीएलएएस को स्थाई पुस्तकालय के रूप में तैनात करने और आवश्यक पर्यावरण चर सेट करने का सुझाव दिया।हेरोकू

तो, मैं एक 64 बिट लिनक्स बॉक्स पर libblas.a संकलित, और [2] में वर्णित के रूप निम्न चर सेट:

$ heroku config 
BLAS    => .heroku/vendor/lib/libfblas.a 
LD_LIBRARY_PATH => .heroku/vendor/lib 
LIBRARY_PATH  => .heroku/vendor/lib 
PATH    => bin:/usr/local/bin:/usr/bin:/bin 
PYTHONUNBUFFERED => true 

मेरी requirements.txt में scipy == 0.10.1 जोड़ने के बाद, धक्का अभी भी विफल रहता है।

 File "scipy/integrate/setup.py", line 10, in configuration 

     blas_opt = get_info('blas_opt',notfound_action=2) 

    File "/tmp/build_h5l5y31i49e8/lib/python2.7/site-packages/numpy/distutils/system_info.py", line 311, in get_info 

     return cl().get_info(notfound_action) 

    File "/tmp/build_h5l5y31i49e8/lib/python2.7/site-packages/numpy/distutils/system_info.py", line 462, in get_info 

     raise self.notfounderror(self.notfounderror.__doc__) 

    numpy.distutils.system_info.BlasNotFoundError: 

     Blas (http://www.netlib.org/blas/) libraries not found. 

     Directories to search for the libraries can be specified in the 

     numpy/distutils/site.cfg file (section [blas]) or by setting 

     the BLAS environment variable. 

ऐसा नहीं है कि पिप लगते BLAS वातावरण चर के बारे में पता नहीं है, इसलिए मैं पर्यावरण Heroku रन अजगर का उपयोग कर की जाँच करें:

(venv)bash-3.2$ heroku run python 
Running python attached to terminal... import up, run.1 
Python 2.7.2 (default, Oct 31 2011, 16:22:04) 
[GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.system('bash') 
~ $ echo $BLAS 
.heroku/vendor/lib/libfblas.a 
~ $ ls .heroku/vendor/lib/libfblas.a 
.heroku/vendor/lib/libfblas.a 
~ $ 

और यह ठीक लग रहा है। अब मुझे नहीं पता कि इसे कैसे हल किया जाए।

[1] http://www.netlib.org/blas/ [2] http://www.scipy.org/Installing_SciPy/Linux

उत्तर

3

स्लग संकलक नहीं अपने वातावरण चर के बारे में पता है, जिसके कारण यह धक्का दौरान विफल रहता है, और एक बार नहीं चल रहा है।

आपके पास एकमात्र वास्तविक विकल्प है user_env_compile एडन जो वर्तमान में प्रयोगशाला बीटा में है।

http://devcenter.heroku.com/articles/labs-user-env-compile

15

मैं bdists के रूप में numpy और scipy ऑफ़लाइन निर्माण और उसके बाद Heroku अजगर buildpack संशोधित सीधे dyno के विक्रेता/venv क्षेत्रों पर इन अनज़िप करने से देवदार ढेर पर इस काम के पाने में कामयाब रहे। आप बनाए रखने वाले पर्यावरण चर सेट करने के लिए बिल्डपैक का भी उपयोग कर सकते हैं।

हेरोकू ने आधिकारिक तौर पर अभी तक बिल्डपैक प्रकाशित नहीं किए हैं - अधिक तृतीय पक्ष/heroku लोगों और जानकारी के लिए 'heroku buildpacks' की खोज करें।/संकलन जहाँ मैं दो नए कदम, एक scipy/numpy कदम और एक openopt कदम स्रोत https://[email protected]/wyn/heroku-buildpack-python.git

परिवर्तन बिन में कर रहे हैं:

अजगर का निर्माण पैक के मेरे कांटा यहाँ है। दो चरणों के लिए स्क्रिप्ट बिन/चरणों/npscipy और बिन/चरणों/openopt में हैं। मैंने बिन/रिलीज में कुछ चर भी जोड़े। ध्यान दें कि मैं require.txt दृष्टिकोण (c.f. https://devcenter.heroku.com/articles/python-pip#traditional_distributions) के बजाय setup.py फ़ाइल के माध्यम से स्थापना मान रहा हूं।

मैं ब्लैस/लैपैक/एटलस/गौफ्रान बाइनरी भी डाउनलोड करता हूं जिनका उपयोग डिनो पर numpy/scipy बनाने के लिए किया जाता था क्योंकि सी एक्सटेंशन होते हैं जिन्हें उन्हें लिंक करने की आवश्यकता होती है। ऑफ़लाइन और डाउनलोड करने के लिए सबकुछ बनाने का कारण यह है कि पाइप-इंस्टॉलेशन numpy/scipy के लिए आपको एक फर्मन कंपाइलर + संबंधित देव पर्यावरण की आवश्यकता होती है और इससे मेरे स्लग बहुत बड़े होते हैं।

ऐसा लगता है कि स्लग आकार अब 35 एमबी है और स्केलिंग भी तेज दिखता है। सभी में से एक numpy परीक्षण पास और सभी scipy परीक्षण पास पास।

यह अभी भी मेरे लिए प्रगति पर है लेकिन मैंने सोचा कि मैं साझा करूंगा।

+1

क्षमा करें, अगर आप बिल्डपैक का उपयोग करना चाहते हैं तो ऐसा करना भूल गया है: $ heroku create appname --stack = cedar [email protected]: wyn/heroku-buildpack-python.git – coshx

+3

महान काम! मैं हेरोकू में पाइथन लड़का हूं। :) –

+0

धन्यवाद, मैं देवदार ढेर के साथ खेलना और पैक बनाना चाहता हूं। अब मैं वल्कन बिल्डर में देख रहा हूं, मुझे लगता है कि इन चीज़ों को इसके साथ बनाया जाना अच्छा होगा ... – coshx

8

यदि कोई और ऐसा करता है जैसे मैंने किया ...

excellent answer@coshx से इस प्रश्न पर दुख की बात नहीं है (कम से कम मैं इसे काम नहीं कर सका)। मैं क्या किया था, लेकिन था निम्नलिखित:

  1. मैं @coshx से npsicpy-binaries भंडार काँटेदार और ऐसे सभी टार फ़ाइलों को परिवर्तित कि वे venv के रूप में रूट फ़ोल्डर के अंदर

  2. (मेरे कांटा here है) की जरूरत नहीं है
  3. मैंने @coshx से npsp-helloworld भंडार को फोर्क किया और इसे setup.py के बजाय requirements.txt फ़ाइल का उपयोग किया (मेरा कांटा here - इसका मतलब है कि आप पूरे पीआईपी दृष्टिकोण का उपयोग कर सकते हैं)।

  4. मैं Heroku से heroku-buildpack-python भंडार काँटेदार, @coshx से npscipy फ़ाइल लिया और निर्माण पैक के इस नवीनतम संस्करण के साथ काम करने के लिए इसे बदल (मेरे कांटा here है - आप देख सकते हैं कोई venv की स्थापना की है कि वहाँ, उदाहरण के लिए)।

उन तीन बातें करने के बाद मैं npsp-helloworld आवेदन पूरी तरह से काम कर रहा है। तुम बस और आप buildpack उचित रूप से सेट जब आवेदन बनाने सुनिश्चित करने की आवश्यकता आप बिल्कुल तैयार हैं:

$ heroku create --stack=cedar --buildpack=https://github.com/kmp1/heroku-buildpack-python.git 

नोट: मैं बाहर काम नहीं किया है कि कैसे अभी तक अपने ही बाइनरी बनाने के लिए है, तो तीन पुस्तकालयों (scipy, numpy और scikit-जानें) नहीं कर रहे हैं नवीनतम संस्करण तो यह सुनिश्चित कर लें जब आप इसे स्थापित आप (यदि किसी को भी इन निर्माण कर सकते हैं मैं खुशी उनके लिए एक पुल अनुरोध) को स्वीकार करेंगे है:

pip install scipy==0.11.0 
pip install numpy==1.7.0 
pip install scikit-learn==0.13.1 

वैसे - मैं वास्तव में माफी चाहता हूं अगर मैंने सही तरीके से शिष्टाचार के अनुसार चीजें नहीं की हैं। मैं अभी भी गिट सीख रहा हूं और यह पूरी खुली स्रोत चीज है।

1

उन लोगों के लिए जो उत्पादन में पायथन 3.4 का उपयोग करना चाहते हैं, मैंने numpy 1.8.1, scipy 0.14.0 बनाया है, और scikit-0.15-git सीखें (0.14 किसी कारण से दूसरों के साथ काम नहीं करता है) उबंटू 10.04 एलटीएस 64-बिट पर द्विआधारी के रूप में, जो हेरोकू देवदार ढेर पर काम करता है। Here is the git repo

मेरा हेरोकू बिल्डपैक kmp के समान है। ध्यान दें कि बिन/चरण/npscipy फ़ाइल उपरोक्त बाइनरी के मेरे भंडार से लिंक है।

8

एक और अच्छा विकल्प conda buildpack है, जो आपको एनाकोंडा/मिनिकॉन्डा के माध्यम से एक हेरोकू ऐप में उपलब्ध मुफ्त लिनक्स 64 पैकेजों को जोड़ने की अनुमति देता है। कुछ सबसे लोकप्रिय पैकेजों में numpy, scipy, scikit-learn, figuresmodels, pandas, और cvxopt शामिल हैं। जबकि बिल्डपैक ऐप में पैकेज जोड़ने के लिए काफी सरल बनाता है, डाउनसाइड्स यह है कि बिल्डबैक बहुत अधिक जगह लेता है और आपको रिपॉजिटरी में लाइब्रेरी अपडेट करने के लिए एनाकोंडा पर इंतजार करना होगा।

आप Heroku पर एक नया अजगर अनुप्रयोग शुरू कर रहे हैं, तो आप conda buildpack आदेश का उपयोग जोड़ सकते हैं:

$ heroku create YOUR_APP_NAME --buildpack https://github.com/kennethreitz/conda-buildpack.git 

आप पहले से ही सेटअप Heroku पर एक अजगर एप्लिकेशन है, तो आप के लिए conda buildpack जोड़ सकते हैं मौजूदा एप्लिकेशन आदेश का उपयोग:

$ heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git 

या, यदि आप नाम से एप्लिकेशन निर्दिष्ट करना होगा:

$ heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git --app YOUR_APP_NAME 

बिल्डपैक का उपयोग करने के लिए, आपको ऐप निर्देशिका, settings.txt और conda-requirements.txt में दो टेक्स्ट फ़ाइलों को शामिल करने की आवश्यकता होगी। जैसे मानक पायथन बिल्डपैक के साथ, require.txt फ़ाइल संकुल सूचीबद्ध करती है जिसे पाइप का उपयोग करके स्थापित किया जाना चाहिए। कोंडा का उपयोग करके स्थापित किए जाने वाले पैकेज को conda-requirements.txt फ़ाइल में सूचीबद्ध किया गया है। कुछ सबसे उपयोगी वैज्ञानिक पैकेजों में numpy, scipy, scikit-learn, figuresmodels, pandas, और cvxopt शामिल हैं। उपलब्ध कोंडा पैकेज की पूरी सूची repo.continuum.io पर पाई जा सकती है।

उदाहरण के लिए:

$ cat requirements.txt 
gunicorn==0.14.2 
requests==0.11.1 

$ cat conda-requirements.txt 
scipy 
numpy 
cvxopt 

यह है कि! अब आप हेनोकू पर पाइथन ऐप में एनाकोंडा पैकेज जोड़ सकते हैं।

+0

[एक स्पष्ट स्पष्टीकरण] (https://devcenter.heroku.com/articles/python-c-deps) क्यों conda buildpack मौजूद है। ध्यान दें कि यह बिल्डपैक केनेथ रीट्ज द्वारा बनाए रखा जाता है, जो ["हेरोकू की पायथन पेशकश के तकनीकी डिजाइन के लिए ज़िम्मेदार है।"] (Https://www.linkedin.com/in/kennethreitz) – Jason

1

मैं इसे यहां डाल रहा हूं अगर कोई इस तरह से ठोकर खाए। चूंकि मैं पाइथन 3.4 का उपयोग कर रहा हूं, thenovices buildpack मेरे लिए काम नहीं करता है।

मैंने कोंडा बिल्डपैक को देखने की कोशिश की, लेकिन ऐसा लगता है कि मेरे आवेदन के लिए एक ओवरकिल थोड़ा सा लगता है, जिसे केवल तंग और सुस्त की आवश्यकता होती है। अंत में मेरे लिए क्या काम करता है this excellent guide, एक बहु बिल्डपैक दृष्टिकोण का उपयोग कर। हालांकि उपवास स्थापना वास्तव में थोड़ी देर थी। उम्मीद है की यह मदद करेगा! :)