cx_Freeze:“没有名为'codecs'的模块”

5
我一直在拼命地尝试将我的Python Pygame程序编译成独立的可执行文件,但一直没有成功。PyInstaller与Pygame不兼容,Nuitka无法制作有效的独立文件,而cx_Freeze似乎是最好的选择。然而,当我使用我的setup.py进行编译时,它生成了一组文件,但main可执行文件无法运行。
我的setup.py如下:
import sys
import cx_Freeze

executables = [cx_Freeze.Executable("main.py")]
images =["assets/images/1.png","assets/images/2.png","assets/images/3.png","assets/images/4.png","assets/images/5.png","assets/images/6.png","assets/images/7.png","assets/images/8.png","assets/images/tile.png","assets/images/mark.png","assets/images/mine.png","assets/images/overlay.png","assets/images/overlay_2.png","assets/images/background.png"]

cx_Freeze.setup(
    name="Minesweeper",
    options={"build_exe": {"packages":["pygame"],
                           "include_files":images}},
    executables = executables

)

主文件main.py引用了其他的Python文件;这会有影响吗?

非常感谢。

编辑: 根据请求,平台为Linux(Ubuntu 14.04); Python版本为3.4.3; cx_Freeze是cxfreeze 5.0,通过pip下载。 准确的错误信息如下:

Fatal Python error: Py_Initialize: Unable to get locale encoding
Traceback (most recent call last):
File "usr/lib/python3.4/encodings/__init__.py", line 31, in <module>
ImportError: No module named 'codecs'
Aborted (core dumped)

什么平台?cx_Freeze的哪个版本?Python的哪个版本?你得到了哪个异常(和调用栈)?只要main.py使用常规的导入语句导入其他Python文件,其他文件应该会被自动找到和包含。 - Anthony Tuininga
@AnthonyTuininga 已附加到问题中。如果您需要更多信息,请随时提问。 - user4548084
1
Ubuntu有一个修改过的Python版本,可能会与cx_Freeze产生冲突。如果您自己构建Python,则问题应该会消失。如果是这种情况,请告诉我。我也会尝试在我的Ubuntu环境中进行测试。 - Anthony Tuininga
@AnthonyTuininga 好的,谢谢。但我不确定该怎么做。现在我已经找到了使用其他软件的解决方法。还是谢谢! - user4548084
1个回答

1

我在使用cx_Freeze 5.0.1和Python 3.4.4在Ubuntu 15.10上时也遇到了完全相同的问题。正如@Anthony Tuininga建议的那样,从this source重新安装Python可以解决这个问题。

wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
tar xzf Python-3.4.4.tgz

# I had to specify the location of zlib in my case
cd Python-3.4.4
./configure --with-zlib-dir=/usr/lib/x86_64-linux-gnu
sudo make altinstall

接着,我从源代码安装了cx_Freeze

wget https://github.com/anthony-tuininga/cx_Freeze/archive/5.0.1.tar.gz
tar xzf 5.0.1.tar.gz
cd ./cx_Freeze-5.0.1/
python3.4 setup.py build
sudo python3.4 setup.py install

我也从源代码安装了pygame(因为你也在使用它):
wget https://github.com/pygame/pygame/archive/1.9.3.tar.gz
tar xzf 1.9.3.tar.gz
cd ./pygame-1.9.3/
python3.4 setup.py build
sudo python3.4 setup.py install

我会相信你的话!谢谢你的指导 :) - user4548084

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接