在Centos7上安裝wxPython4.0.4

在linux上安裝wxPython4.0.4時須要gtk+2.0,在安裝wxPython4.0.4遇到如下錯誤。html

linux上是用pip安裝wxPython4.0.4的,執行命令以下:python

pip install wxpythonlinux

[root@gm gtk+]# pip install wxpython
Collecting wxpython
  Downloading http://mirrors.zte.com.cn/pypi/packages/17/74/7c3ced03c3c76b9f98e4a0edae1801755a7599ebf481c04d9f77dfff17e3/wxPython-4.0.4.tar.gz (68.8MB)
    100% |████████████████████████████████| 68.8MB 4.7MB/s
Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/site-packages (from wxpython)
Requirement already satisfied (use --upgrade to upgrade): Pillow in /usr/lib64/python2.7/site-packages (from wxpython)
Installing collected packages: wxpython
  Running setup.py install for wxpython ... error
    Complete output from command /usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t_6afe/wxpython/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-pnjkOu-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    WARNING: Building this way assumes that all generated files have been
    generated already.  If that is not the case then use build.py directly
    to generate the source and perform the build stage.  You can use
    --skip-build with the bdist_* or install commands to avoid this
    message and the wxWidgets and Phoenix build steps in the future.

    "/usr/bin/python2" -u build.py build
    Will build using: "/usr/bin/python2"
    2.7.5 (default, Oct 30 2018, 23:45:53)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
    Python's architecture is 64bit
    cfg.VERSION: 4.0.4

    Running command: build
    Running command: build_wx
    wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
    Configure options: ['--enable-unicode', '--with-gtk=3', '--with-opengl', '--enable-sound', '--enable-graphics_ctx', '--enable-mediactrl', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
    /tmp/pip-build-t_6afe/wxpython/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --with-opengl --enable-sound --enable-graphics_ctx --enable-mediactrl --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for --disable-gui... no
    checking for --enable-monolithic... no
    checking for --enable-plugins... no
    checking for --without-subdirs... no
    checking for --enable-official_build... no
    checking for --disable-all-features... no
    checking for --enable-universal... no
    checking for --enable-nanox... no
    checking for --enable-gpe... no
    checking for toolkit... gtk
    checking for --with-libpng... yes
    checking for --with-libjpeg... yes
    checking for --with-libtiff... yes
    checking for --without-libjbig... no
    checking for --without-liblzma... no
    checking for --with-libxpm... yes
    checking for --with-libiconv... yes
    checking for --with-libmspack... no
    checking for --without-gtkprint... no
    checking for --with-gnomevfs... no
    checking for --with-libnotify... yes
    checking for --with-hildon... no
    checking for --with-opengl... yes
    checking for --with-dmalloc... no
    checking for --with-sdl... yes
    checking for --with-regex... yes
    checking for --with-zlib... yes
    checking for --with-expat... yes
    checking for --with-macosx-sdk...
    checking for --with-macosx-version-min...
    checking for --enable-debug... default
    checking for --disable-debug_flag... no
    checking for --enable-debug_info... no
    checking for --enable-debug_gdb... no
    checking for --enable-debug_cntxt... no
    checking for --enable-mem_tracing... no
    checking for --disable-shared... no
    checking for --enable-stl... no
    checking for --enable-std_containers... no
    checking for --enable-std_iostreams... yes
    checking for --enable-std_string... yes
    checking for --enable-std_string_conv_in_wxstring... no
    checking for --disable-unicode... no
    checking for --enable-mslu... no
    checking for --enable-utf8... no
    checking for --enable-utf8only... no
    checking for --enable-extended_rtti... no
    checking for --disable-optimise... no
    checking for --enable-profile... no
    checking for --enable-no_rtti... no
    checking for --enable-no_exceptions... no
    checking for --enable-permissive... no
    checking for --enable-no_deps... no
    checking for --disable-vararg_macros... no
    checking for --enable-universal_binary... no
    checking for --enable-macosx_arch... no
    checking for --enable-compat26... no
    checking for --disable-compat28... no
    checking for --disable-rpath... no
    checking for --enable-objc_uniquifying... no
    checking for --disable-visibility... no
    checking for --disable-tls... no
    checking for --enable-intl... yes
    checking for --enable-xlocale... yes
    checking for --enable-config... yes
    checking for --enable-protocols... yes
    checking for --enable-ftp... yes
    checking for --enable-http... yes
    checking for --enable-fileproto... yes
    checking for --enable-sockets... yes
    checking for --enable-ipv6... no
    checking for --enable-ole... yes
    checking for --enable-dataobj... yes
    checking for --enable-ipc... yes
    checking for --enable-baseevtloop... yes
    checking for --enable-epollloop... yes
    checking for --enable-selectloop... yes
    checking for --enable-any... yes
    checking for --enable-apple_ieee... yes
    checking for --enable-arcstream... yes
    checking for --enable-base64... yes
    checking for --enable-backtrace... yes
    checking for --enable-catch_segvs... yes
    checking for --enable-cmdline... yes
    checking for --enable-datetime... yes
    checking for --enable-debugreport... no
    checking for --enable-dialupman... yes
    checking for --enable-dynlib... yes
    checking for --enable-dynamicloader... yes
    checking for --enable-exceptions... yes
    checking for --enable-ffile... yes
    checking for --enable-file... yes
    checking for --enable-filehistory... yes
    checking for --enable-filesystem... yes
    checking for --enable-fontenum... yes
    checking for --enable-fontmap... yes
    checking for --enable-fs_archive... yes
    checking for --enable-fs_inet... yes
    checking for --enable-fs_zip... yes
    checking for --enable-fsvolume... yes
    checking for --enable-fswatcher... yes
    checking for --enable-geometry... yes
    checking for --enable-log... yes
    checking for --enable-longlong... yes
    checking for --enable-mimetype... yes
    checking for --enable-printfposparam... yes
    checking for --enable-snglinst... yes
    checking for --enable-sound... yes
    checking for --enable-stdpaths... yes
    checking for --enable-stopwatch... yes
    checking for --enable-streams... yes
    checking for --enable-sysoptions... yes
    checking for --enable-tarstream... yes
    checking for --enable-textbuf... yes
    checking for --enable-textfile... yes
    checking for --enable-timer... yes
    checking for --enable-variant... yes
    checking for --enable-zipstream... yes
    checking for --enable-url... yes
    checking for --enable-protocol... yes
    checking for --enable-protocol_http... yes
    checking for --enable-protocol_ftp... yes
    checking for --enable-protocol_file... yes
    checking for --enable-threads... yes
    checking for --enable-iniconf... no
    checking for --enable-regkey... yes
    checking for --enable-docview... yes
    checking for --enable-help... yes
    checking for --enable-mshtmlhelp... yes
    checking for --enable-html... yes
    checking for --enable-htmlhelp... yes
    checking for --enable-xrc... yes
    checking for --enable-aui... yes
    checking for --enable-propgrid... yes
    checking for --enable-ribbon... yes
    checking for --enable-stc... yes
    checking for --enable-constraints... yes
    checking for --enable-loggui... yes
    checking for --enable-logwin... yes
    checking for --enable-logdialog... yes
    checking for --enable-mdi... yes
    checking for --enable-mdidoc... yes
    checking for --enable-mediactrl... yes
    checking for --enable-gstreamer8... no
    checking for --enable-richtext... yes
    checking for --enable-postscript... yes
    checking for --enable-printarch... yes
    checking for --enable-svg... yes
    checking for --enable-webkit... yes
    checking for --enable-webview... yes
    checking for --enable-graphics_ctx... yes
    checking for --enable-clipboard... yes
    checking for --enable-dnd... yes
    checking for --disable-controls... no
    checking for --enable-markup... yes
    checking for --enable-accel... yes
    checking for --enable-animatectrl... yes
    checking for --enable-bannerwindow... yes
    checking for --enable-artstd... yes
    checking for --enable-arttango... auto
    checking for --enable-bmpbutton... yes
    checking for --enable-bmpcombobox... yes
    checking for --enable-button... yes
    checking for --enable-calendar... yes
    checking for --enable-caret... yes
    checking for --enable-checkbox... yes
    checking for --enable-checklst... yes
    checking for --enable-choice... yes
    checking for --enable-choicebook... yes
    checking for --enable-collpane... yes
    checking for --enable-colourpicker... yes
    checking for --enable-combobox... yes
    checking for --enable-comboctrl... yes
    checking for --enable-commandlinkbutton... yes
    checking for --enable-dataviewctrl... yes
    checking for --enable-datepick... yes
    checking for --enable-detect_sm... yes
    checking for --enable-dirpicker... yes
    checking for --enable-display... yes
    checking for --enable-editablebox... yes
    checking for --enable-filectrl... yes
    checking for --enable-filepicker... yes
    checking for --enable-fontpicker... yes
    checking for --enable-gauge... yes
    checking for --enable-grid... yes
    checking for --enable-headerctrl... yes
    checking for --enable-hyperlink... yes
    checking for --enable-imaglist... yes
    checking for --enable-infobar... yes
    checking for --enable-listbook... yes
    checking for --enable-listbox... yes
    checking for --enable-listctrl... yes
    checking for --enable-notebook... yes
    checking for --enable-notifmsg... yes
    checking for --enable-odcombobox... yes
    checking for --enable-popupwin... yes
    checking for --enable-prefseditor... yes
    checking for --enable-radiobox... yes
    checking for --enable-radiobtn... yes
    checking for --enable-richmsgdlg... yes
    checking for --enable-richtooltip... yes
    checking for --enable-rearrangectrl... yes
    checking for --enable-sash... yes
    checking for --enable-scrollbar... yes
    checking for --enable-searchctrl... yes
    checking for --enable-slider... yes
    checking for --enable-spinbtn... yes
    checking for --enable-spinctrl... yes
    checking for --enable-splitter... yes
    checking for --enable-statbmp... yes
    checking for --enable-statbox... yes
    checking for --enable-statline... yes
    checking for --enable-stattext... yes
    checking for --enable-statusbar... yes
    checking for --enable-taskbaricon... yes
    checking for --enable-tbarnative... yes
    checking for --enable-textctrl... yes
    checking for --enable-timepick... yes
    checking for --enable-tipwindow... yes
    checking for --enable-togglebtn... yes
    checking for --enable-toolbar... yes
    checking for --enable-toolbook... yes
    checking for --enable-treebook... yes
    checking for --enable-treectrl... yes
    checking for --enable-treelist... yes
    checking for --enable-commondlg... yes
    checking for --enable-aboutdlg... yes
    checking for --enable-choicedlg... yes
    checking for --enable-coldlg... yes
    checking for --enable-filedlg... yes
    checking for --enable-finddlg... yes
    checking for --enable-fontdlg... yes
    checking for --enable-dirdlg... yes
    checking for --enable-msgdlg... yes
    checking for --enable-numberdlg... yes
    checking for --enable-splash... yes
    checking for --enable-textdlg... yes
    checking for --enable-tipdlg... yes
    checking for --enable-progressdlg... yes
    checking for --enable-wizarddlg... yes
    checking for --enable-menus... yes
    checking for --enable-miniframe... yes
    checking for --enable-tooltips... yes
    checking for --enable-splines... yes
    checking for --enable-mousewheel... yes
    checking for --enable-validators... yes
    checking for --enable-busyinfo... yes
    checking for --enable-hotkey... auto
    checking for --enable-joystick... yes
    checking for --enable-metafile... auto
    checking for --enable-dragimage... yes
    checking for --enable-accessibility... no
    checking for --enable-uiactionsim... yes
    checking for --enable-dctransform... yes
    checking for --enable-webviewwebkit... yes
    checking for --enable-palette... yes
    checking for --enable-image... yes
    checking for --enable-gif... yes
    checking for --enable-pcx... yes
    checking for --enable-tga... yes
    checking for --enable-iff... yes
    checking for --enable-pnm... yes
    checking for --enable-xpm... yes
    checking for --enable-ico_cur... yes
    checking for --enable-dccache... yes
    checking for --enable-ps-in-msw... yes
    checking for --enable-ownerdrawn... yes
    checking for --enable-uxtheme... yes
    checking for --enable-wxdib... yes
    checking for --enable-webviewie... yes
    checking for --enable-autoidman... yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether we are using the Intel C compiler... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking whether gcc needs -traditional... no
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking whether we are using the Intel C++ compiler... no
    checking whether we are using the Sun C++ compiler... no
    checking for ar... ar
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for langinfo.h... yes
    checking for wchar.h... yes
    checking for sys/select.h... yes
    checking for cxxabi.h... yes
    checking for an ANSI C-conforming const... yes
    checking for inline... inline
    checking size of short... 2
    checking size of void *... 8
    checking size of int... 4
    checking size of long... 8
    checking size of size_t... 8
    checking size of long long... 8
    checking size of wchar_t... 4
    checking for va_copy... yes
    checking whether the compiler supports variadic macros... yes
    checking for _FILE_OFFSET_BITS value needed for large files... 64
    checking if large file support is available... yes
    checking for _LARGEFILE_SOURCE value needed for large files... no
    checking whether byte ordering is bigendian... no
    checking for iostream... yes
    checking if C++ compiler supports the explicit keyword... yes
    checking for std::wstring in <string>... yes
    checking for std::istream... yes
    checking for std::ostream... yes
    checking how to run the C++ preprocessor... g++ -E
    checking type_traits usability... no
    checking type_traits presence... no
    checking for type_traits... no
    checking tr1/type_traits usability... yes
    checking tr1/type_traits presence... yes
    checking for tr1/type_traits... yes
    checking for __sync_fetch_and_add and __sync_sub_and_fetch builtins... yes
    checking for libraries directories... /usr/lib64
    checking for cos... no
    checking for floor... no
    checking if floating point functions link without -lm... no
    checking for sin... yes
    checking for ceil... yes
    checking if floating point functions link with -lm... yes
    checking for strtoull... yes
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    configure: WARNING: Defaulting to the builtin regex library for Unicode build.
    checking for zlib.h >= 1.1.4... yes
    checking for zlib.h... (cached) yes
    checking for deflate in -lz... yes
    checking for png.h > 0.90... yes
    checking for png.h... (cached) yes
    checking for png_sig_cmp in -lpng... yes
    checking for jpeglib.h... yes
    checking for jpeg_read_header in -ljpeg... yes
    checking for tiffio.h... no
    configure: WARNING: system tiff library not found, will use built-in instead
    checking for lzma_code in -llzma... no
    checking for jbg_dec_init in -ljbig... no
    checking for expat.h... yes
    checking if expat.h is valid C++ header... yes
    checking for XML_ParserCreate in -lexpat... yes
    checking for GTK+ version...
    checking for pkg-config... /usr/bin/pkg-config
    checking for GTK+ - version >= 3.0.0... no
    *** Could not run GTK+ test program, checking why...
    *** The test program failed to compile or link. See the file config.log for the
    *** exact error that occured. This usually means GTK+ is incorrectly installed.
    configure: error:
    The development files for GTK+ were not found. For GTK+ 2, please
    ensure that pkg-config is in the path and that gtk+-2.0.pc is
    installed. For GTK+ 1.2 please check that gtk-config is in the path,
    and that the version is 1.2.3 or above. Also check that the
    libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
    --libs' are in the LD_LIBRARY_PATH or equivalent.

    Error running configure
    ERROR: failed building wxWidgets
    Traceback (most recent call last):
      File "build.py", line 1321, in cmd_build_wx
        wxbuild.main(wxDir(), build_options)
      File "/tmp/pip-build-t_6afe/wxpython/buildtools/build_wxwidgets.py", line 375, in main
        "Error running configure")
      File "/tmp/pip-build-t_6afe/wxpython/buildtools/build_wxwidgets.py", line 85, in exitIfError
        raise builder.BuildError(msg)
    BuildError
    Finished command: build_wx (4.690s)
    Finished command: build (4.690s)
    Command '"/usr/bin/python2" -u build.py build' failed with exit code 1.

    ----------------------------------------
Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t_6afe/wxpython/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-pnjkOu-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-t_6afe/wxpython/
View Code

主要錯誤摘錄以下:ios

 1     *** Could not run GTK+ test program, checking why...
 2     *** The test program failed to compile or link. See the file config.log for the
 3     *** exact error that occured. This usually means GTK+ is incorrectly installed.
 4     configure: error:
 5     The development files for GTK+ were not found. For GTK+ 2, please
 6     ensure that pkg-config is in the path and that gtk+-2.0.pc is
 7     installed. For GTK+ 1.2 please check that gtk-config is in the path,
 8     and that the version is 1.2.3 or above. Also check that the
 9     libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
10     --libs' are in the LD_LIBRARY_PATH or equivalent.
11 
12     Error running configure
13     ERROR: failed building wxWidgets
14     Traceback (most recent call last):
15       File "build.py", line 1321, in cmd_build_wx
16         wxbuild.main(wxDir(), build_options)
17       File "/tmp/pip-build-t_6afe/wxpython/buildtools/build_wxwidgets.py", line 375, in main
18         "Error running configure")
19       File "/tmp/pip-build-t_6afe/wxpython/buildtools/build_wxwidgets.py", line 85, in exitIfError
20         raise builder.BuildError(msg)
21     BuildError
22     Finished command: build_wx (4.690s)
23     Finished command: build (4.690s)
24     Command '"/usr/bin/python2" -u build.py build' failed with exit code 1.
25 
26     ----------------------------------------
27 Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t_6afe/wxpython/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-pnjkOu-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-t_6afe/wxpython/

因此首要任務是解決gtk+2.0是否安裝,且安裝正確了。web

測試方法能夠參見這個連接裏()的測試程序,若是測試程序編譯成功,且執行後出現GUI界面,則gtk+2.0就是安裝成功的。macos

本文特意將測試程序和製做方法截取出來。centos

#vi helloworld.c
#include <gtk/gtk.h>

int main(int argc, char* argv[])
{
   GtkWidget* window;
   GtkWidget* label;

   gtk_init(&argc, &argv);

   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

   label = gtk_label_new("Hello World.");

   gtk_container_add(GTK_CONTAINER(window), label);

   gtk_widget_show_all(window);

   gtk_main();

   return 0;
}
編譯運行
gcc -o helloworld helloworld.c `pkg-config --cflags --libs gtk+-2.0`
./Helloworld

測試後確認,gui是能夠出現的。另外,又用pkg-config,查看了gtk+的全部庫,查看命令和結果以下:app

1 [root@gm lib]# pkg-config --list-all |grep gtk
2 gtk+-unix-print-2.0       GTK+ - GTK+ Unix print support
3 gtk+                      GTK+ - GIMP Tool Kit
4 gtk+-x11-2.0              GTK+ - GTK+ Graphical UI Library (x11 target)
5 gtk+-2.0                  GTK+ - GTK+ Graphical UI Library (x11 target)

再查看gtk的版本號:socket

1 # 使用外部命令查看安裝的gtk庫版本
2 
3 $pkg-config --modversion gtk+    (查看1.2.x版本)
4 
5 $pkg-config --modversion gtk+-2.0  (查看 2.x 版本)
6 2.24.31
7 $pkg-config --version (查看pkg-config的版本)
8 
9 $pkg-config --list-all |grep gtk (查看是否安裝了gtk) 

以上操做均證實gtk+2.0確實是安裝了的。ide

問題是pip缺找不到gtk+2.0.

先把gtk2.0放在一邊,我又仔細看下了下wxPython的官網,說macOS和window之外類unix不提供二進制形式,但提供源碼或wheel包。請參考如下連接:

https://pip.pypa.io/en/stable/reference/pip_search/

https://wiki.wxpython.org/How%20to%20install%20wxPython

https://extras.wxpython.org/wxPython4/extras/linux/gtk2/centos-7/wxPython-4.0.4-cp27-cp27mu-linux_x86_64.whl (wheel下載)

 https://wiki.wxpython.org/Gtk%20and%20Win32%20differences

下載linux的wheel後,直接執行pip install wxPython-4.0.4-cp27-cp27mu-linux_x86_64.whl 執行成功後,就能夠執行python 你的gtk腳本了。

相關文章
相關標籤/搜索