2017-05-18 8 views
0

ありません、私は(私は wxPython3.0を使用)のopenSUSE 42.1にcx_Freeze 4.3.3のバイナリファイルを作成しようとしていますのopenSUSEとcx_Freeze 4.3.3:はImportError:libwx_gtk2u_adv-suse.so.1:そのようなファイルやディレクトリは

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import sys 
from cx_Freeze import setup, Executable 

path = sys.path 
path += ["/usr/lib64"] 

includes = [] 
excludes = ['PyQt4', 'PyQt5', 'Tkinter', 'FixTk', 'tcl', 'tk', '_tkinter', 'collections.abc'] 
packages = ['matplotlib.backends.backend_wxagg', 'numpy'] 

includefiles = ['./data/','./images/','./html/','./locale/','./logs/'] 

binpathincludes = [] 

if sys.platform == "linux2": 
    binpathincludes += ["/usr/lib64"] 
    binpathincludes += ["/usr/lib"] 

base = 'Console' 

options = {"path": path, 
      "includes": includes, 
      "excludes": excludes, 
      "packages": packages, 
      "include_files": includefiles, 
      "bin_path_includes": binpathincludes, 
      "optimize": 0, 
      "silent": True 
      } 

executables = [ 
    Executable('MyProjetc.py', base=base) 
] 

setup(name='MyProject', 
     version='1.0', 
     description='My Project', 
     executables=executables, 
     options={'build_exe': options} 
     ) 

が、私は空のシステム上で私のバイナリプログラムを実行しよう:が、空のopenSUSEシステム上で、私は私のプログラムを実行することはできません...ここ

は私のsetup.pyファイルでありますopensuse( wxPythonがインストールされていない場合)、このエラーが発生します:

Traceback (most recent call last): 
File "/usr/lib64/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 27, in <module> 
File "JustConsum.py", line 4, in <module> 
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk2/wx/__init__.py", line 45, in <module> 
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py", line 4, in <module> 
File "ExtensionLoader_wx__core_.py", line 22, in <module> 
File "ExtensionLoader_wx__core_.py", line 14, in __bootstrap__ 
ImportError: libwx_gtk2u_adv-suse.so.1: cannot open shared object file: No such file or directory 

しかし、そのファイル「libwx_gtk2u_adv-suse.so.1は、」バイナリファイルを含むディレクトリのルートに実際に です:

-rwxrwx--- 1 regis users 1918960 25 oct. 2015 libwx_gtk2u_adv-suse.so.1 
-rwxrwx--- 1 regis users 575528 25 oct. 2015 libwx_gtk2u_aui-suse.so.1 
-rwxrwx--- 1 regis users 5780640 25 oct. 2015 libwx_gtk2u_core-suse.so.1 

何が起こっている上の任意のアイデア?

Thxをたくさん

答えて

0

だから私は、インターネット上で検索し、「patchelf」コマンドを見つけました。 (cx_Freezeで生成された)私のバイナリファイルは、私の実行ファイルと同じディレクトリにあったように、私は、スクリプトを作成しました:

for i in *so* 
do 
    patchelf --set-rpath '.' $i 
done 

私のスタンドアロンのアプリケーションは、「空」のopenSUSEシステム上で起動することができ、以来...

注:

  • このソリューションはcx_Freezeの4.3.xで動作しますが、5.xバージョンでない

  • 何の問題もなく、さまざまな他のLinuxプラットフォーム(Debian、Mint、Ubuntu、Mageia、Fedora、CentOS)でスタンドアロンアプリケーション(この同じプログラム用)を作成しました。

  • 私のスタンドアロンプ​​ログラムがうまくいくように、この種の操作が必要なのはopenSuseだけです...私は理由を説明できません。

この投稿は他にも役立つかもしれません。

関連する問題