为什么 gcc 不能编译 virtualenv 中的 Python 包?

为什么 gcc 不能编译 virtualenv 中的 Python 包?

我正在尝试将 Python 脚本编译为可执行文件,该脚本依赖于仅安装在虚拟环境中的包:

sudo su
source /home/me/venv/bin/activate   # Activates virtualenv
cython --embed -o defer4.c defer4.py
gcc -Os -I /usr/include/python3.5m -o defer4 defer4.c -lpython3.5m -lpthread -lm -lutil -ldl

which python3.5
~/venv/bin/python3.5

defer4.py脚本依赖于安装在虚拟环境内的 pip3 包~/venv

完成的可执行文件defer4失败,并提示其期望的包不存在。错误:

me@remote:~$ ./defer4
Traceback (most recent call last):
  File "defer4.py", line 44, in init defer4
    from autobahn.twisted.component import Component, run
  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/__init__.py", line 40, in <module>
    from autobahn.twisted.util import sleep
  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/util.py", line 31, in <module>
    from twisted.internet.defer import Deferred
ImportError: No module named 'twisted.internet'

通常,当我在未安装 twisted 的虚拟环境之外运行 defer4.py 时,会出现此错误。记住在虚拟环境内部运行它总能解决这个问题。

我尝试在第二个命令中用 /home/me/venv/bin/python3.5 路径替换/usr/include/python3.5,但这不起作用(fatal error: Python.h: No such file or directory)。有什么帮助吗?

相关内容