首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zlib和binascii不使用Python3.6构建

Zlib和binascii不使用Python3.6构建
EN

Stack Overflow用户
提问于 2017-07-05 06:52:25
回答 1查看 4K关注 0票数 2

我一直试图从Ubuntu14.04上的源代码构建Python3.6.1。命令的顺序如自述所建议的那样:

代码语言:javascript
复制
./configure
make
make test

后者崩溃是因为它无法导入binascii。其产出如下:

代码语言:javascript
复制
Following modules built successfully but were removed because they could not be imported:
binascii              zlib 

试图跳过make test并启动make install,在导入zlib失败后,它崩溃了。Ubuntu论坛中的一些人建议从存储库中更新zlib的所有包。这没什么用。我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-16 01:31:01

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

我已经在我的mac中尝试过Python3.6.1构建,并且也遇到了您的问题。它在做完后会抱怨下面的消息。

代码语言:javascript
复制
Python build finished successfully!
The necessary bits to build these optional modules were not found:
       ... zlib ...

我也不能在交互式shell中导入zlib。

代码语言:javascript
复制
>>> 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. 安装zlib (解压缩、配置、制作、安装)。
  3. 重新安装Python3.6.1 (使其干净,生成)。

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

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

代码语言:javascript
复制
    # 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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44918913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档