Установить wxpython для python2 и 3 на Ubuntu
Я использую Ubuntu 16 и у меня есть Python 2 и 3. Я скачал wxpython, и он работает с интерпретатором Python2, но не 3. Я получаю
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>>
а также
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'wx'
Что мне нужно сделать, чтобы установить Python 3?
1 ответ
Аналогичная ситуация возникает на Fedora 25, на которой я смог решить эту проблему. Ваш пробег может отличаться от Ubuntu.
Прежде всего обратите внимание, что wxPython доступен в двух основных версиях, назовем их wx3 и wx4. Вы можете определить свою работающую версию через import wx; print(wx.version())
, Строка версии на Fedora 25 гласит '3.0.2.0 gtk3 (classic)'
т. е. бренд wx3. В sourceforge эти версии известны как wxPython и wxPython4, а wxpython.org вызывает wx4 "феникс".
Изучив исходный код wx3, вы заметите, что синтаксис wx3 несовместим с python3. И наоборот, wx4 совместим как с python2.7, так и с python3.
wx4, по-видимому, недоступен в Fedora 25, поэтому python3 не может запустить любой wx из коробки. Ubuntu может иметь или не иметь ту же проблему.
Следующее сработало для меня, чтобы установить wx4 в виртуальной среде python3:
pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/fedora-26 wxPython
Я предполагаю, что ответ на ваш вопрос будет
pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 wxPython
Если вам нужно перенести приложение (py2, wx3) на python3, вам следует создать промежуточный шаг: (py2, wx3) -> (py2, wx4) -> (py3, wx4), отметив это (py3, wx3) это невозможно.
Создание среды (py2, wx4) было для меня более обременительным, потому что pip install
команда не может найти заголовочные файлы при запуске с использованием pip2.
В итоге мне удалось загрузить исходный код 4.0.0b2: https://pypi.python.org/packages/bc/6f/f7bb525517557e1c596bf22ef3f242b87afaeab57c9ad460cb94b3b0714e/wxPython-4.0.0b2.tar.gz#md5=2e3716205da8f52d8039095d14534bf7
и следуйте инструкциям по сборке https://github.com/wxWidgets/Phoenix/blob/master/README.rst, из которых я использовал только команду сборки python build.py dox etg --nodoc sip build
,
После сборки вам нужно сообщить вашему python2, где найти библиотеку wx4. Я закончил тем, что сделал это путем создания virtualenv и создания символической ссылки следующим образом:
/home/user/venv/lib/python2.7/site-packages/wx -> /home/user/downloads/wxPython/wxPython-4.0.0b2/wx
Этот последний каталог соизмерим с результатом сборки.