【发布时间】:2021-12-24 10:52:29
【问题描述】:
我有一个 Cython/Python Dash/Flask 应用程序,我正在尝试在 Digitalocean 上编译和部署。
我设法部署了以前的版本就好了 - 但是在提取最新的编译之后现在失败了:
building 'event' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/var/www/anagami/anagamienv/include -I/usr/include/python3.8 -c event.c -o build/temp.linux-x86_64-3.8/event.o
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
我正在使用 ubuntu 20 + python 3.8。相同的代码在 windows 上编译和运行非常好,并且用于在 ubuntu 上编译和运行 jsut 的稍早版本也是如此。
编译器在一个特定的扩展上卡住了很长时间(比如 15-20 分钟)并且总是给出那个错误。
到目前为止我已经尝试过 - 没有任何效果:
- 删除所有 .pyd .c .so 文件并重新编译构建文件夹
- 按照有类似问题的线程上的建议安装模块 libpcap-dev 和 libpq-dev
- sudo apt-get install build-essential libssl-dev libffi-dev python-dev - 同上
- 在 Windows 上编译并尝试在不重新编译的情况下在 linux 上运行相同的代码 - 程序没有开始给出错误,即它找不到编译失败的“事件”模块
- nginx 和 wsgi 服务已禁用,我不会尝试覆盖任何正在使用的文件
- 程序非常轻量,因此不太可能出现任何实际内存问题
我之前遇到过这个问题,当时只是删除 + 重新编译似乎可以解决问题 - 但现在我完全陷入困境 - 我已经尝试了任何我能想到的东西,但我没有解决这个问题.
更新:
我通过运行 python3 event.pyx 隔离了错误,它给出了以下信息:
cdef class master_event_table:
^
SyntaxError: invalid syntax
【问题讨论】:
-
给出你跑过的所有步骤
-
除了要点中的内容之外,我真的想不出我做过的任何其他事情。我还尝试在我的 setup.py 中添加 import setuptoops。在 Windows 上独立运行 py event.pyx 也会产生 cdef 语法错误,但是当我编译整个应用程序时它可以工作。关于我已完成的步骤,我还有什么特别可以提供的吗?
-
还发现到另一个文件中,它在独立运行时遇到了一些 cdef str 的问题(这些在 Windows 上运行良好,之前在 ubuntu 上的同一个程序中运行)。我已经删除了它们,所以没有任何其他文件中的“语法错误”问题,只有事件中的 cdef 类,它仍然无法编译
-
我在运行导入的模块独立 cp 时发现了另一个“语法”错误 - 这是行(也可以正常工作..):cpdef event_MOVE(input_settings):
-
python3 event.pyx将 never 期望工作,因为您正在尝试将其作为 Python 文件读取。你想在文件上运行 Cython
标签: python ubuntu gcc cython digital-ocean