在Ubuntu下编译Cx-Freeze
今天我一直在尝试在Ubuntu 14.04上编译cx-Freeze,但一直没成功。所以我放弃了,决定在这里请教一些专家。
我有什么
- Ubuntu 14.04
- Python 3.4
- 安装了python-dev、python3-dev和python3.4-dev(我知道这是个常见问题)
- cx-Freeze 4.3.3的源代码
我尝试了两种方法:
- 从源代码安装
- 通过pip安装
从源代码安装
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
通过pip安装
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
所以,我希望你们能帮我解决这个问题,我会非常感激的:)
4 个回答
-1
看起来你可能打错字了,试着把
sudo pip3 install cx-Freeze
改成
sudo pip3 install cx_Freeze
4
GriMel的回答对我有用。在cx_freeze发布更新之前,我这里有一套步骤,可以让你按照GriMel的解决方案来操作。
# 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/
我还在一个看起来是源代码库的bitbucket上开了个问题。
https://bitbucket.org/anthony_tuininga/cx_freeze/issues/153/cx_freeze-434-compile-error-on-ubuntu-1404
6
下载
你需要 下载源代码
对于 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
14
在 setup.py 文件中的字符串
if not vars.get("Py_ENABLE_SHARED", 0):
替换为
if True:
感谢 Thomas K