Heroku Python二进制库依赖项

问题描述 投票:8回答:3

我需要在需要Python软件包dm.xmlsec.binding的Heroku Django项目上运行代码。这又取决于通常通过dm.xmlsec.binding安装二进制apt程序包libxmlsec1

这就是我在Ubuntu流浪汉盒子上本地运行东西的方式。

部署到Heroku:方法

我的应用程序中有两个“构建​​包”。使用apt-get install启用具有多个buildpack。

由于我的应用程序是Python应用程序,因此我的heroku-buildpack-multi内容为:

.buildpacks

第一个buildpack,指的是https://github.com/ddollar/heroku-buildpack-apt https://github.com/heroku/heroku-buildpack-python ,需要heroku-buildpack-apt来指定Aptfile软件包;在我们的例子中,该文件的内容是:

apt

第二个构建包是“ python-setuptools libxmlsec1 libxmlsec1-dev swig python-m2crypto ”。

到目前为止一切顺利。

部署到Heroku:问题

问题是,虽然Heroku buildpack for Python apps, powered by pip软件包看起来像已成功安装,但是当apt实际运行时,似乎找不到已安装的pip install软件包。

如果apt软件包安装正确,为什么Python在后续的apt中找不到它们?

这是完整的pip install日志:

git push heroku
python python-2.7 heroku apt
3个回答
1
投票

我不知道,但答案可能是git push heroku Fetching repository, done. Counting objects: 12, done. Delta compression using up to 8 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (9/9), 932 bytes | 0 bytes/s, done. Total 9 (delta 3), reused 0 (delta 0) -----> Fetching custom git buildpack... done -----> Multipack app detected =====> Downloading Buildpack: https://github.com/ddollar/heroku-buildpack-apt =====> Detected Framework: Apt -----> Updating apt caches Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-security InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Hit http://archive.ubuntu.com trusty Release.gpg Get:1 http://archive.ubuntu.com trusty-security Release.gpg [933 B] Get:2 http://archive.ubuntu.com trusty-updates Release.gpg [933 B] Hit http://archive.ubuntu.com trusty Release Get:3 http://archive.ubuntu.com trusty-security Release [62.0 kB] Get:4 http://archive.ubuntu.com trusty-updates Release [62.0 kB] Hit http://archive.ubuntu.com trusty/main amd64 Packages Hit http://archive.ubuntu.com trusty/universe amd64 Packages Hit http://archive.ubuntu.com trusty/main Translation-en Hit http://archive.ubuntu.com trusty/universe Translation-en Get:5 http://archive.ubuntu.com trusty-security/main amd64 Packages [153 kB] Hit http://archive.ubuntu.com trusty-security/main Translation-en Get:6 http://archive.ubuntu.com trusty-updates/main amd64 Packages [356 kB] Hit http://archive.ubuntu.com trusty-updates/main Translation-en Fetched 635 kB in 2s (247 kB/s) Reading package lists... -----> Fetching .debs for python-setuptools Reading package lists... Building dependency tree... The following extra packages will be installed: python-pkg-resources Suggested packages: python-distribute python-distribute-doc The following NEW packages will be installed: python-pkg-resources python-setuptools 0 upgraded, 2 newly installed, 0 to remove and 38 not upgraded. Need to get 292 kB of archives. After this operation, 1017 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main python-pkg-resources all 3.3-1ubuntu1 [61.9 kB] Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main python-setuptools all 3.3-1ubuntu1 [230 kB] Fetched 292 kB in 0s (408 kB/s) Download complete and in download only mode -----> Fetching .debs for libxmlsec1 Reading package lists... Building dependency tree... The following NEW packages will be installed: libxmlsec1 0 upgraded, 1 newly installed, 0 to remove and 38 not upgraded. Need to get 0 B/115 kB of archives. After this operation, 436 kB of additional disk space will be used. Download complete and in download only mode -----> Fetching .debs for libxmlsec1-dev Reading package lists... Building dependency tree... The following extra packages will be installed: libnspr4 libnspr4-dev libnss3 libnss3-dev libnss3-nssdb libxmlsec1 libxmlsec1-gcrypt libxmlsec1-gnutls libxmlsec1-nss libxmlsec1-openssl The following NEW packages will be installed: libnspr4 libnspr4-dev libnss3 libnss3-dev libnss3-nssdb libxmlsec1 libxmlsec1-dev libxmlsec1-gcrypt libxmlsec1-gnutls libxmlsec1-nss libxmlsec1-openssl 0 upgraded, 11 newly installed, 0 to remove and 38 not upgraded. Need to get 0 B/2579 kB of archives. After this operation, 14.1 MB of additional disk space will be used. Download complete and in download only mode -----> Fetching .debs for swig Reading package lists... Building dependency tree... The following extra packages will be installed: swig2.0 Suggested packages: swig-doc swig-examples swig2.0-examples swig2.0-doc The following NEW packages will be installed: swig swig2.0 0 upgraded, 2 newly installed, 0 to remove and 38 not upgraded. Need to get 0 B/881 kB of archives. After this operation, 4412 kB of additional disk space will be used. Download complete and in download only mode -----> Fetching .debs for python-m2crypto Reading package lists... Building dependency tree... The following NEW packages will be installed: python-m2crypto 0 upgraded, 1 newly installed, 0 to remove and 38 not upgraded. Need to get 0 B/156 kB of archives. After this operation, 831 kB of additional disk space will be used. Download complete and in download only mode -----> Installing libnspr4-dev_2%3a4.10.7-0ubuntu0.14.04.1_amd64.deb -----> Installing libnspr4_2%3a4.10.7-0ubuntu0.14.04.1_amd64.deb -----> Installing libnss3-dev_2%3a3.17.1-0ubuntu0.14.04.1_amd64.deb -----> Installing libnss3-nssdb_2%3a3.17.1-0ubuntu0.14.04.1_all.deb -----> Installing libnss3_2%3a3.17.1-0ubuntu0.14.04.1_amd64.deb -----> Installing libxmlsec1-dev_1.2.18-2ubuntu1_amd64.deb -----> Installing libxmlsec1-gcrypt_1.2.18-2ubuntu1_amd64.deb -----> Installing libxmlsec1-gnutls_1.2.18-2ubuntu1_amd64.deb -----> Installing libxmlsec1-nss_1.2.18-2ubuntu1_amd64.deb -----> Installing libxmlsec1-openssl_1.2.18-2ubuntu1_amd64.deb -----> Installing libxmlsec1_1.2.18-2ubuntu1_amd64.deb -----> Installing python-m2crypto_0.21.1-3ubuntu5_amd64.deb -----> Installing python-pkg-resources_3.3-1ubuntu1_all.deb -----> Installing python-setuptools_3.3-1ubuntu1_all.deb -----> Installing swig2.0_2.0.11-1ubuntu2_amd64.deb -----> Installing swig_2.0.11-1ubuntu2_amd64.deb -----> Writing profile script =====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-python =====> Detected Framework: Python -----> Installing dependencies with pip Downloading/unpacking dm.xmlsec.binding==1.3.1 (from -r requirements.txt (line 1)) Running setup.py (path:/tmp/pip_build_u45022/dm.xmlsec.binding/setup.py) egg_info for package dm.xmlsec.binding Error: cannot get XMLSec1 pre-processor and compiler flags; do you have the `libxmlsec1` development package installed? Complete output from command python setup.py egg_info: Error: cannot get XMLSec1 pre-processor and compiler flags; do you have the `libxmlsec1` development package installed? ---------------------------------------- Cleaning up... Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_u45022/dm.xmlsec.binding Storing debug log for failure in /app/.pip/pip.log ! Push rejected, failed to compile Multipack app To [email protected]:xxxxxxxxxxx.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to '[email protected]'

在@PadraicCunningham的惊人帮助下,我设法找到了解决方案。问题原来是heroku-buildpack-apt将内容安装在新创建的文件夹/app/.apt/中,该文件夹不在this中。

所以我如下将相关文件夹添加到了我的heroku上的PYTHONPATH中:

PYTHONPATH


0
投票

对于它的价值,我可以通过做以下两件事使xmlsec1在Heroku上工作:


0
投票

[只要Python中的任何软件包都具有OS依赖性,我都更喜欢在Heroku上构建Docker映像以托管应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.