У меня есть версия 3.5.2 Python, и у меня есть pip3, таким образом, я сделал
sudo pip3 install pyqt5
Это было установлено в/usr/local/lib/python3.5/dist-packages
Однако, когда я ввожу свой интерпретатор python 3 и тип
import PyQt5
это дает мне ошибку, что это не может найти модуль по имени PyQt5.
Таким образом, я пытался добавить/usr/local/lib/python3.5/dist-packages путь к PYTHONPATH путем выполнения
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages
но это ничего не зафиксировало. Как я заставляю Python 3.5.2 обнаружить PyQt5?
Благодаря George I медленно добирался до ответа. Корень проблемы находится, в котором я установил свою версию Python 3.5.2 из источника, а не из диспетчера пакетов способности Ubuntu.
В основном, если Python установлен из источника, то, для поиска сторонних пакетов он использует /usr/local/lib/python3.5/site-packages
, но если он был установлен с помощью apt
, затем взгляды Python в /usr/local/lib/python3.5/dist-packages
. Это должно удостовериться, что несколько версий Python не попадают в историю. Вот другой вопрос, который объясняет: , каково различие между dist-пакетами и пакетами сайта? .
Решение:
Моя установка Python3 изучала пакеты сайта и игнорировала dist-пакеты, таким образом, я добавил файл пути, чтобы заставить ее посмотреть в dist-пакетах также.
cd /usr/local/lib/python3.5/site-packages
sudo vim dist-packages.pth
(Press i to go into insert mode inside Vim)
../dist-packages
:x (and Press Enter/Return)
Теперь, когда Python смотрит в /site-packages
, он находит dist-packages.pth
, который заставляет его войти /dist-packages
.
Другое Решение:
у Кого-то еще была проблема точно мой реверс, где их установка Python только смотрела в /dist-packages
, таким образом, они использовали тот же самый метод как выше кроме вместо того, чтобы делать dist-packages.pth
файл (содержащий ../dist-packages
) в /site-packages
, они сделали site-packages.pth
файл (содержащий ../site-packages
внутренний /dist-packages
.
Проверка, если это работало:
простой способ проверить, работало ли это, состоит в том, чтобы войти в Ваш интерпретатор Python и распечатать sys.path. Это должно теперь содержать оба пути пакета:
charliebrown@playground:/usr/local/lib/python3.5/site-packages$ python3
Python 3.5.2 (default, Nov 19 2016, 02:36:25)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print(sys.path)
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages']
я надеюсь, что это помогает кому-то однажды...