在Anaconda3中使用pip安装wxPythonPhoenix

2024-09-28 22:39:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个Python 3.4virtual environment来试验wxPython Phoenix,因为我发现wxPython只适用于Python2.7。 为此,我使用Anaconda3运行以下命令:

conda create --name wxpython-tutorial python=3
source activate wxpython-tutorial

然后我在wxPython website上找到了pip的以下安装命令:

^{pr2}$

这给了我的CPU很多工作,但不幸的是,它没有正确安装,给了我一个巨大的终端输出。我将在此处粘贴该输出的红线并链接完整的日志文件:

Failed building wheel for wxPython-Phoenix
Command "/usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-5_va3b5w/wxPython-Phoenix/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-uzo3pvq4-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-5_va3b5w/wxPython-Phoenix

我找不到任何关于这样一个普遍的失败消息(1。或是这样一个复杂的(2。以命令开头的行),所以我不知道可能出了什么问题。我也没有看到比wxPython官方网站更好的关于如何在我的虚拟环境中安装它的信息来源。在

Here是指向完整日志文件的链接。在

我无法使用pastebin,文件大小为1.39Mb,超出了pastebin的限制:/

有什么问题?如何在虚拟环境中安装wxpythonforpython3.4?在

编辑1:已安装wxPython网站上列出的所有要求。我在运行pip命令之前检查过了。在

编辑#2:在遵循robind Dunn的建议(安装libwebkit-dev)之后,我能够让pip安装正常运行。但是,现在我仍然不能使用它,因为当我尝试导入它时,会弹出另一个错误:

(wxpython-phoenix-tutorial)xiaolong@xiaolong-VPCF13J0E:~$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun  4 2015, 15:29:08) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/__init__.py", line 17, in <module>
from wx.core import *
File "/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/core.py", line 6, in <module>
from ._core import *
ImportError: libwx_gtk2u_core-3.0.so.0: cannot open shared object file: No such file or directory
>>>

听起来像一个图书馆,应该有,但没有。它是否应该被编译而不是?在

编辑3

我运行RobinDunn建议的ldd命令,结果发现有3个文件丢失:

xiaolong@xiaolong-VPCF13J0E:~$ ldd /home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/_core*.so
linux-vdso.so.1 =>  (0x00007ffe867ed000)
libwx_gtk2u_core-3.0.so.0 => not found
libwx_baseu_net-3.0.so.0 => not found
libwx_baseu-3.0.so.0 => not found
libpython3.4m.so.1.0 => /home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/libpython3.4m.so.1.0 (0x00007fa08164c000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa081348000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa081042000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa080e2c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa080c0e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa080849000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa080645000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa080442000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa0827ec000)

看来,编译过程并没有把它们放在那里。搜索它们会发现,它们是被创建的:

find /home/xiaolong/development/ -name "*libwx_gtk2u_core-3.0*"
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_gtk2u_core-3.0.so
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_gtk2u_core-3.0.so.0
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_gtk2u_core-3.0.so.0.3.0

find /home/xiaolong/development/ -name "*libwx_baseu_net-3.0.so.0*"
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_baseu_net-3.0.so.0.3.0
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_baseu_net-3.0.so.0

find /home/xiaolong/development/ -name "*libwx_baseu-3.0.so.0*"
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_baseu-3.0.so.0
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/libwx_baseu-3.0.so.0.3.0

接下来我会尝试导出他们的位置。在

编辑4 虽然我添加了图书馆的位置作为建议:

export LD_LIBRARY_PATH=/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx

(我还试过去图书馆的完整路径) 我将这一行添加到我的~/.profile文件和~/.bashrc文件中。 在重启终端之后,当我试图在我的虚拟环境python中执行import wx时,仍然会遇到相同的错误:

(wxpython-phoenix-tutorial)xiaolong@xiaolong-VPCF13J0E:~/development/anaconda3/envs/wxpython-phoenix-tutorial$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun  4 2015, 15:29:08) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/__init__.py", line 17, in <module>
    from wx.core import *
  File "/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/core.py", line 6, in <module>
    from ._core import *
ImportError: libwx_gtk2u_core-3.0.so.0: cannot open shared object file: No such file or directory
>>> 

Tags: corehomelinuxlibpackageswxpythonsitetutorial
1条回答
网友
1楼 · 发布于 2024-09-28 22:39:12

第一个编译错误是:

  ../../../sip/cpp/sip_html2cmodule.cpp:386:1: error: ‘wxWebView’ does not name a type

回溯到wxWidgets配置和构建,您可以看到:

^{pr2}$

所以基本上它告诉你你需要为webkitgtk安装dev包。在

编辑2:

默认为Phoenix的构建.py将把它构建的wxWidgets共享库复制到wx包文件夹中,并在扩展模块中设置rpath,以便像往常一样使用相对路径而不是常用的固定路径来查找这些库。这样做是为了使wxPython-Phoenix包具有可重定位性,以允许在不同的virtualenv中使用不同的版本,等等

要检查是否正确发生了这种情况,请查看/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx并查看是否有一堆{}文件。这些是wxWidgets共享库。您还可以运行此程序来查看扩展是否能够找到这些库(可能不是因为您得到了错误,但它可能会提供一些线索):

ldd /home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx/_core*.so

如果所有其他方法都失败,则可以设置一个环境变量,使动态链接器能够用老式的方式找到这些lib:

export LD_LIBRARY_PATH=/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx

相关问题 更多 >