2017-07-05 29 views
2

私はUbuntu 14.04のソースコードからPython3.6.1をビルドしようとしています。 READMEで推奨されているように一連のコマンドは次のとおりです。ZlibとbinasciiはPython3.6でビルドしません

./configure 
make 
make test 

後者がクラッシュそれはbinasciiをインポートすることはできませんので。

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

make testをスキップして、私はそれがzlibのインポートに失敗した後、クラッシュしていmake installを開始しようとすると:その出力では、次があります。 Ubuntuフォーラムの人々の中には、zlibのすべてのパッケージをリポジトリから更新することを提案している人もいます。それは助けにはならない。これをどうやって解決するのですか?

+1

ラン3つのコマンドとリダイレクトそれぞれだ_stdout_(および_stderr_)(例えば: './configureを> configure_out.txt 2>&1 ')、その後、どこかにこれらの3つのファイルにアクセスできるようにします。 _Python_モジュールはどちらも_zlib_に依存しています:あなたは_root_として 'apt install zlib1g zlib1g-dev'(少なくともそれらは_Ubtu16(x64)_のpkg名です)を試してから_Python_を再構築してみてください。 – CristiFati

答えて

1

を手動でソースコード(http://www.zlib.net/)からのzlib をインストールしてみます(YUM/apt-getを/醸造を経て...ない)は役に立つかもしれません。

私は自分のmac devに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. install zlib(解凍、構成、make、make install)。

  3. 再インストールPython3.6.1(make clean、make)。

zlibが不足していると不満を募らず、シェルでzlibを正常にインポートできました。

実際、この種の問題を解決するために、ソースコードからいくつかのヒントを見つけることができます。 "setup.py"で次のコードを見つけることができます。コメントはかなり役に立ちます。デバッグ情報を使ってコードを修正して、問題が本当にどこにあるかを見つけることができます(私にとっては、zlib.hが見つからないため最初のif checkが失敗するためです)。ファイルへ

# 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') 
+0

私はあなたが説明している問題を抱えていました(私の記憶が役立つならば、 'sudo apt-get install zlib-dev';私は今、そのコンピュータにいません)。あなたは正しいですが、setup.py – Synedraacus

+0

をチェックすると、apt-getまたはyumによるzlibのインストールが問題を解決できなかったようです(「importError:zlibをインポートすると、zlibという名前のモジュールはありません」) 。あなたは手動でソースコードからzlibをインストールする必要があります。[http://www.zlib.net/](http://www.zlib.net/)。 – StringToken

+0

OK、私は答えを受け入れましたが、解答:手動インストールを回答自体に追加してください。 – Synedraacus

関連する問題