我试图创建一个Python 3.4
virtual 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
>>>
第一个编译错误是:
回溯到wxWidgets配置和构建,您可以看到:
^{pr2}$所以基本上它告诉你你需要为webkitgtk安装dev包。在
编辑2:
默认为Phoenix的构建.py将把它构建的wxWidgets共享库复制到wx包文件夹中,并在扩展模块中设置rpath,以便像往常一样使用相对路径而不是常用的固定路径来查找这些库。这样做是为了使wxPython-Phoenix包具有可重定位性,以允许在不同的virtualenv中使用不同的版本,等等
要检查是否正确发生了这种情况,请查看}文件。这些是wxWidgets共享库。您还可以运行此程序来查看扩展是否能够找到这些库(可能不是因为您得到了错误,但它可能会提供一些线索):
/home/xiaolong/development/anaconda3/envs/wxpython-phoenix-tutorial/lib/python3.4/site-packages/wx
并查看是否有一堆{如果所有其他方法都失败,则可以设置一个环境变量,使动态链接器能够用老式的方式找到这些lib:
相关问题 更多 >
编程相关推荐