После обновления Python 2.7 до Python 3 Sublime не распознает ранее импортированные модули.

Информация о системе: Sublime Text 3.1.1 и Mac 10.14 Mojave

Я новичок в программировании и просто слежу за книгой, чтобы изучить Python. Я только что обновился с python 2.7 до python 3. Теперь Sublime не распознает модули, которые я ранее импортировал и с которыми работал, а именно pygame и pygal. Когда я пытаюсь импортировать их, я получаю следующую ошибку:

import pygame

Traceback (most recent call last):
  File "/Users/MyNameHere/Desktop/python_work/data_visualization/python_repos.py", line 1, in <module>
    import pygame
ModuleNotFoundError: No module named 'pygame'

(где python_repos.py - текущая программа, в которой я работаю).

Я знаю, что уже установил эти модули, потому что, когда я пытаюсь установить pygame, например, с pip install pygame в терминале, я получаю:

`Requirement already satisfied: pygame in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (1.9.4)`

То же самое и с другими рассматриваемыми модулями. Я много чего пробовал, чтобы найти решение. Одна из возможных вещей, которая часто возникает, - это предложение убедиться, что Sublime использует обновленную версию pygame / pygal / etc. но я не знаю как это сделать.

Кроме того, я думаю, может быть, pygame / pygal / etc. загружаются в какую-то папку, содержащую все мои программы на Python 2.7, и не относятся к моим материалам Python 3. Если это правильно, как мне добавить уже загруженные программы в свой каталог Python 3 или что-то еще?


person Sam    schedule 06.11.2018    source источник
comment
К вашему сведению, есть некоторые критические изменения с Python 2.7 на Python 3.0. Итак, если ваша книга была написана для Python 2, некоторые вещи в ней будут отличаться для 3. Вам определенно следует использовать 3, поэтому помните, что есть изменения, и проверьте руководство по миграции на python.org, если что-то из книги не соответствует не работает.   -  person A. L. Flanagan    schedule 06.11.2018
comment
Возможно, ваша проблема связана с тем, что python выполняет Python 2. # и python3 используется для выполнения Python 3. # (потому что, как упоминал @ A.L.Flanagan, Python 2 и 3 не на 100% перекрестно совместимы). Обычно это означает, что они оба хранят свои библиотеки в разных местах, вам нужно pip3 для установки модулей для Python 3, а также встроенная система сборки для Python в Sublime выполняет python, поэтому всегда версия 2, требующая изменения для вызова python3 вместо этого (но похоже, что вы это уже сделали).   -  person OdatNurd    schedule 07.11.2018


Ответы (1)


Вам необходимо (пере) установить пакеты, которые вы установили один раз, с Python 2.x до Python 3.x. Вы не можете использовать их в другой версии. Все пакеты (в основном все) имеют версию, соответствующую конкретной версии Python. Это самый простой способ получить надежную среду Python. На самом деле иногда есть версия 2.x и наоборот, которую опытный программист может обновить сам, но такая необходимость возникает относительно редко, и, как вы сказали, это не совсем так.

Итак, все, что вам нужно сделать, это установить актуальную версию пакета Python 3.x для работы.

Кроме того, существуют инструменты миграции между двумя основными версиями, но в данном случае я думаю, что в этом нет необходимости.

Например, здесь вы можете найти версию Pygame для Python 3.x.

В первом случае, когда вы пытались установить Pygame, он находился в среде Python 2.x, потому что вы получаете сообщение о том, что требования уже выполнены, поскольку, как вы писали, вы уже установили его.

Напротив, сообщение об ошибке возникло в среде Python 3.x. Таким образом, вы должны знать, где вы устанавливаете требуемый пакет. Контрольная точка для этого запускается python --version в командной оболочке и читает полученное сообщение, например:

Python 3.6.5 :: Anaconda, Inc

Хотя в некоторых системах при некоторой установке вы обнаружите, что python запустит Python 3.x, а в других запустит Python 2.x, а python3 запустит Python 3.x. Подобное может случиться и с pip/pip3. Если у вас есть команда pip3 или simlink, она будет обрабатывать пакеты для Python 3.x и так далее (см. Мое примечание ниже). Тогда вы узнаете, в какой среде вы пытаетесь установить данный пакет.

Примечание.

Лучший способ - и наиболее предпочтительный - для использования другой версии Python, отличной от используемой в вашей системе по умолчанию, с использованием Виртуальная среда Python, оставив версию Python по умолчанию для вашей системы.

person Geeocode    schedule 06.11.2018
comment
Вы буквально бог. Geeocode большое вам спасибо. Мне так хорошо помогли. Кроме того, для тех, кто смотрит на это с той же проблемой, я изначально не знал, как загружать пакеты в терминал с помощью python 3, который имел форму pip install _____. По сути, вы просто выполняете python3 -m pip install -U ______ --user, где _______ - это имя пакета, который вы хотите установить. Еще раз СПАСИБО, МОЙ ДРУГ - person Sam; 07.11.2018
comment
@Sam Я не знаю, как работает под Mac, но вы должны знать, какую версию pip вы используете. В некоторых системах есть две версии pip, например. pip и pip3. Кроме того, см. Правку выше. В любом случае мое удовольствие! - person Geeocode; 07.11.2018
comment
Это лучшее решение, чем мой обходной путь. В очередной раз вы доказали свое мастерство Geeocode. Ваше здоровье - person Sam; 07.11.2018