Zlib 和 binascii 不使用 Python3.6 构建



我一直在尝试从Ubuntu 14.04上的源代码构建Python3.6.1。命令顺序按照自述文件的建议:

./configure
make
make test

后者崩溃,因为它无法导入binascii。在其输出中,有以下内容:

Following modules built successfully but were removed because they could not be imported:
binascii              zlib 

试图跳过make test并开始make install我在导入zlib失败后崩溃了.Ubuntu 论坛中的一些人建议从存储库更新所有 zlib 的软件包。这无济于事。我该如何解决这个问题?

尝试手动从源代码(http://www.zlib.net/(安装 zlib(而不是通过 yum/apt-get/brew...(可能会有所帮助。

我已经在我的mac开发中尝试了Python3.6.1构建,也遇到了您的问题。它抱怨以下消息后。

Python build finished successfully!
The necessary bits to build these optional modules were not found:
... zlib ...

而且我也不能在交互式外壳中导入 zlib。

>>> import zlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'zlib'

我已经通过以下步骤解决了问题。

  1. 访问 http://www.zlib.net/并下载 zlib-1.2.11。

  2. 安装
  3. zlib (解压缩, 配置, 制作, 制作安装(.

  4. 重新安装 Python3.6.1 (清理,制作(。

我发现制作过程不再抱怨 zlib 丢失了,我可以在 shell 中成功导入 zlib。

实际上,要解决这类问题,我们可能会从源代码中找到一些提示。 我们可以在"setup.py"中找到以下代码,注释非常有用。我们可以使用调试信息修改代码以找到问题的真正位置(对我来说,这是因为第一个 if 检查由于 zlib.h 丢失而失败(。

# You can upgrade zlib to version 1.1.4 yourself by going to
# http://www.gzip.org/zlib/
zlib_inc = find_file('zlib.h', [], inc_dirs)
have_zlib = False
if zlib_inc is not None:
zlib_h = zlib_inc[0] + '/zlib.h'
version = '"0.0.0"'
version_req = '"1.1.3"'
if host_platform == 'darwin' and is_macosx_sdk_path(zlib_h):
zlib_h = os.path.join(macosx_sdk_root(), zlib_h[1:])
with open(zlib_h) as fp:
while 1:
line = fp.readline()
if not line:
break
if line.startswith('#define ZLIB_VERSION'):
version = line.split()[2]
break
if version >= version_req:
if (self.compiler.find_library_file(lib_dirs, 'z')):
if host_platform == "darwin":
zlib_extra_link_args = ('-Wl,-search_paths_first',)
else:
zlib_extra_link_args = ()
exts.append( Extension('zlib', ['zlibmodule.c'],
libraries = ['z'],
extra_link_args = zlib_extra_link_args))
have_zlib = True
else:
missing.append('zlib')
else:
missing.append('zlib')
else:
missing.append('zlib')

最新更新