2

所以我在本地构建了这个 Rails 应用程序并通过 Heroku 部署它。我依赖的这个重要的 python 脚本大量使用了 pycurl 库。我的脚本能够在本地运行,因为我能够在本地机器上轻松下载并安装 pycurl。问题是 pycurl 没有远程安装在 Heroku 上,我似乎无法弄清楚如何安装 pycurl 以便 Heroku 可以运行我的 python 脚本。我在我的 rails 应用程序中下载了 setuptools 以及 pycurl tar 文件,并尝试通过 ssh 进入 heroku 并运行类似 python setyp.py install 或 pip install pycurl 之类的东西,但是,这些命令都不会运行,因为我没有也不能对这个目录有写访问权:/usr/local/lib/python2.7/site-packages/ 在heroku上(你也不能以root身份运行这些命令,因为Heroku也不允许你)。在尝试了一切之后,

“.....如果您没有对这台机器的管理访问权限,您可能希望选择一个不同的安装目录,最好是 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 回答