2

そこで、この Rails アプリケーションをローカルでビルドし、Heroku 経由でデプロイしました。pycurl ライブラリを頻繁に使用する、私が依存しているこの重要な python スクリプトがあります。ローカル マシンに pycurl を簡単にダウンロードしてインストールできたため、スクリプトをローカルで実行できます。問題は、pycurl が Heroku にリモートでインストールされていないことです。Heroku が Python スクリプトを実行できるように pycurl をインストールする方法がわかりません。setuptools と pycurl tar ファイルを Rails アプリにダウンロードし、heroku に ssh して python setyp.py install や pip install pycurl などを実行しようとしましたが、これらのコマンドはどれも実行されません。 heroku の /usr/local/lib/python2.7/site-packages/ ディレクトリへの書き込みアクセス権を持っています (Heroku では許可されないため、これらのコマンドを root として実行することもできません)。ありとあらゆることを試した末、

「.....このマシンへの管理アクセス権がない場合は、別のインストール ディレクトリを選択することをお勧めします。できれば、PYTHONPATH 環境変数にリストされているディレクトリを選択してください。」

これについてどうすればよいかわかりません。どんな助けでも大歓迎です。

また、いくつかのスタック オーバーフローの投稿に出くわしましたが、これまでのところ役に立ちませんでした。さらに情報が必要な場合はお知らせください。

TL;DR - Heroku に Python モジュール/ライブラリをインストールします。

4

1 に答える 1

0

requirements.txt ファイルを Python デプロイメントに追加します。そこに Python の依存関係を記述します (pycurl だけでなく、他の依存関係を追加します)。heroku みんなからのこのドキュメントをチェックしてください

Heroku アプリで pycurl を使用していますが、heroku へのアップロードに問題はありません。

  Installing dependencies using Pip (1.3.1)
   Downloading/unpacking pycurl==7.19.0 (from -r requirements.txt (line 11))
     Running setup.py egg_info for package pycurl
       Using curl-config (libcurl 7.19.7)  

  Installing collected packages: pycurl
     Running setup.py install for pycurl
       Using curl-config (libcurl 7.19.7)
       building 'pycurl' extension
       gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_SSL=1 -I/app/.heroku/python/include/python2.7 -c src/pycurl.c -o build/temp.linux-x86_64-2.7/src/pycurl.o
       src/pycurl.c: In function ‘do_multi_info_read’:
       src/pycurl.c:2843: warning: call to ‘_curl_easy_getinfo_err_string’ declared with attribute warning: curl_easy_getinfo expects a pointer to char * for this info
       src/pycurl.c: In function ‘multi_socket_callback’:
       src/pycurl.c:2355: warning: call to ‘_curl_easy_getinfo_err_string’ declared with attribute warning: curl_easy_getinfo expects a pointer to char * for this info
       In function ‘util_curl_unsetopt’,
           inlined from ‘do_curl_unsetopt’ at src/pycurl.c:1551:
       src/pycurl.c:1476: warning: call to ‘_curl_easy_setopt_err_CURLSH’ declared with attribute warning: curl_easy_setopt expects a CURLSH* argument for this option
       gcc -pthread -shared build/temp.linux-x86_64-2.7/src/pycurl.o -lcurl -lidn -lssl -lcrypto -llber -lldap -lrt -lgssapi_krb5 -lgssapi_krb5 -lssl -lcrypto -lz -o build/lib.linux-x86_64-2.7/pycurl.so /usr/lib/libcurl.a

 Successfully installed pycurl
于 2013-08-23T13:05:51.533 に答える