2

我目前正在尝试将 Lambda 作为Zappa (Python3.6) 启动。在 AWS 端部署应用程序/配置所有内容后,我运行以下命令在本地环境中测试应用程序,

zappa invoke production script.main

并得到了这个错误,

/tmp/virtualenv_name/pymssql.cpython-36m-x86_64-linux-gnu.so:未定义符号:PyFPE_jbuf:ImportError

Traceback(最近一次调用最后一次):文件“/var/task/handler.py”,第 509 行,在 lambda_handler return LambdaHandler.lambda_handler(event, context)

文件“/var/task/handler.py”,第 237 行,在 lambda_handler handler = cls()

文件“/var/task/handler.py”,第 129 行,在init self.app_module = importlib.import_module(self.settings.APP_MODULE)

文件“/var/lang/lib/python3.6/importlib/init .py ”,第 126 行,在 >import_module return _bootstrap._gcd_import(name[level:], package, level)

_gcd_import 中的文件“冻结 importlib._bootstrap”,第 978 行

_find_and_load 中的文件“frozen importlib._bootstrap”,第 961 行

_find_and_load_unlocked 中的文件“frozen importlib._bootstrap”,第 950 行

_load_unlocked 中的文件“frozen importlib._bootstrap”,第 655 行

文件“冻结 importlib._bootstrap_external>”,第 678 行,在 exec_module

_call_with_frames_removed 中的文件“frozen importlib._bootstrap”,第 205 行

文件“/tmp/virtualenv_name/script.py”,第 3 行,在 > 模块中

导入 pymssql

ImportError:/tmp/virtualenv_name/pymssql.cpython-36m-x86_64-linux-gnu.so:未定义符号:PyFPE_jbuf

我读过的大多数问题PyFPE_jbuf似乎都涉及某个依赖项的多次安装,但似乎没有一个解决方案适用于此。到目前为止,我已经尝试过,

  1. 在我的虚拟环境中卸载并重新安装 pymssql,然后运行zappa update​​.
  2. 卸载并重新安装其他包含 pymssql(如 sqlalchemy)的包/库,然后运行zappa update​​.
  3. 取消部署项目,执行 1 和 2,然后重新部署。
  4. 在我的虚拟环境中卸载并重新安装 cython,然后运行zappa update​​.

    我对这个错误的理解正确吗?有什么故障排除建议吗?修复?

谢谢!

4

1 回答 1

2

在尝试安装dragnetspacy在 anaconda 环境中时,我遇到了类似的问题。我相信pip install使用的是使用另一个gcc版本编译的缓存文件。解决我的问题的是卸载库,然后使用--no-cache-dir标志重新安装它,例如。它通过为新环境pip install dragnet --no-cache-dir运行从头开始构建包。setup.py

另请注意,您可能需要运行sudo apt install libxml2-dev libxslt-dev python-dev才能使构建成功(至少对于dragnetand spacy,但您可能需要其他东西)

于 2018-03-09T18:01:13.883 回答