Назад | Перейти на главную страницу

Почему gcc не компилируется для пакетов Python внутри virtualenv?

Я пытаюсь скомпилировать скрипт Python в исполняемый файл, который полагается на пакеты, установленные только внутри virtualenv:

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, установленные внутри virtualenv по адресу ~/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'

В общем, я получаю эту ошибку, когда запускаю defer4.py вне своего виртуального сервера, где twisted не установлен. Не забывая запускать его внутри моего virtualenv, всегда решает эту проблему.

Я попытался заменить путь /home/me/venv/bin/python3.5 на /usr/include/python3.5 во второй команде, но это не работает (fatal error: Python.h: No such file or directory). Любая помощь?