我正在尝试让python模块python3-saml在使用标准python buildpack和cflinuxfs2堆栈的云代工厂应用程序上工作。这个模块依赖于python xmlsec模块作为依赖项,但遗憾的是我遇到了让它运行的问题。
我已经整理了一个需求文件,并且已经销售了所有的python依赖项,但是当我运行“cf push”命令时,我一直收到以下错误。
Running setup.py install for xmlsec: started
Running setup.py install for xmlsec: finished with status 'error'
Complete output from command /tmp/contents998689849/deps/0/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-lwwtrplp/xmlsec/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-qwoda574-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
*********************************************************************************
Could not find xmlsec1 config. Are libxmlsec1-dev and pkg-config installed?
*********************************************************************************
----------------------------------------
Command "/tmp/contents998689849/deps/0/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-lwwtrplp/xmlsec/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-qwoda574-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-lwwtrplp/xmlsec/
pip install has failed. You have a vendor directory, it must contain all of your dependencies.
**ERROR** Could not install pip packages: Couldn't run pip: exit status 1
Failed to compile droplet: Failed to run all supply scripts: exit status 14
Exit status 223
我试图手动上传相应libxmlsec1-dev的和libxmlsec1并设置环境变量来引用他们,但升级过程中出现的只是忽略这些,而它的建立包。
为了让这个过程有效,我能做些什么吗?我想在那里有一个自定义的buildpack可以解决这个问题,但我不确定是否有办法使用标准的python buildpack来做到这一点。
主要选择是供应商您的依赖项。使用此选项,您可以在本地构建,然后推送所有已编译的位。诀窍是你必须在兼容的系统上构建,所以你需要一个Ubuntu Trusty PC / VM / Docker容器。
按照这些说明操作,然后运行cf push
并确保没有忽略vendor
目录(从.cfignore
中删除,如果它存在)。
https://docs.cloudfoundry.org/buildpacks/python/index.html#vendoring
应该使用的另一个选项是使用multi-buildpack支持。有了这个,您可以使用两个buildpack推送。第一个是Apt buildpack,第二个是python buildpack。 Apt buildpack允许您安装所需的软件包,看起来像libxmlsec1-dev
。第二个是标准的Python buildpack,但它可以访问通过Apt buildpack安装的内容。
你可以在这里看到说明:https://docs.cloudfoundry.org/buildpacks/use-multiple-buildpacks.html