Компиляция Cx-Freeze под Ubuntu

В течение всего дня я пытаюсь скомпилировать cx-Freeze под Ubuntu 14.04 и не повезло. Поэтому я сдался и решил спросить экспертов здесь.

Что у меня

  • Ubuntu 14.04
  • Python 3.4
  • python-dev, python3-dev, python3.4-dev установлен (я знаю эту общую проблему)
  • Источники cx-Freeze 4.3.3

Я пробовал два способа:

  • установить из источников
  • установить по протоколу

Установить из источников

sudo python3 setup.py install

Что я получил

много

MyPath/cx_Freeze-4.3.3/source/bases/Console.c:24: undefined reference to `PyErr_Print'
MyPath/cx_Freeze-4.3.3/source/bases/Console.c:24: undefined reference to `Py_FatalError'

а затем

collect2: error: ld returned 1 exit status
error: command 'i686-linux-gnu-gcc' failed with exit status 1

Установить по протоколу

sudo pip3 install cx-Freeze

Что я получил

collect2: error: ld returned 1 exit status

ошибка: команда 'i686-linux-gnu-gcc' не удалась с статусом выхода 1

----------------------------------------
Cleaning up...
Command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/cx-Freeze/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-c954v7x6-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/cx-Freeze
Storing debug log for failure in /home/grimel/.pip/pip.log

и в pip.log

Exception information:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/usr/lib/python3/dist-packages/pip/req.py", line 1435, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/pip/req.py", line 706, in install
    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
  File "/usr/lib/python3/dist-packages/pip/util.py", line 697, in call_subprocess
    % (command_desc, proc.returncode, cwd))
pip.exceptions.InstallationError: Command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/cx-Freeze/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-c954v7x6-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/cx-Freeze

Итак, я ожидаю, что вы поможете мне в этом вопросе и будьте очень благодарны:)

Ответы

Ответ 1

В строке setup.py

if not vars.get("Py_ENABLE_SHARED", 0):

заменить на

if True:

Благодаря Thomas K

Ответ 2

Из cx_freeze/issues

Скачать

Вам нужно загрузить исходный код

Для python 3.3 и 3.4:

  • sudo apt-get install python3-dev

  • sudo apt-get install libssl-dev

  • Откройте setup.py и измените строку

    if not vars.get("Py_ENABLE_SHARED", 0):

    к

    if True:

  • python3 setup.py build

  • sudo python3 setup.py install

Для python 2.7:

  • sudo apt-get install python-dev

  • sudo apt-get install libssl-dev

  • Откройте setup.py и измените строку

    if not vars.get("Py_ENABLE_SHARED", 0):

    к

    if True:

  • python setup.py build

  • sudo python setup.py install

Ответ 3

Ответ GriMel сработал у меня. Пока cx_freeze не выпустит обновление для этого, я включаю в себя ряд шагов, которые вы можете сделать, чтобы получить эту работу с использованием решения GriMels.

# create and activate virtualenv (as desired)
virtualenv envs/test_cxfreeze
. ./envs/test_cxfreeze/bin/activate

# download cxfreeze; do not install yet 
mkdir src/ 
pip install --download=./src/ cx-freeze
tar zxvf ./src/cx_Freeze-4.3.4.tar.gz -C ./src/

# fix bug in setup.py
vim src/cx_Freeze-4.3.4/setup.py
84c84
<             if True:
---
>             if not vars.get("Py_ENABLE_SHARED", 0):

# install cxfreeze
pip install ./src/cx_Freeze-4.3.4/

Я также открыл проблему с битбакетом с тем, что похоже на исходное репо.

https://bitbucket.org/anthony_tuininga/cx_freeze/issues/153/cx_freeze-434-compile-error-on-ubuntu-1404

Ответ 4

Похоже, у вас может быть опечатка изменение

 sudo pip3 install cx-Freeze

к

 sudo pip3 install cx_Freeze