Рейтинг:4

Запуск программы Python2 с Python3?

флаг be

РЕДАКТИРОВАТЬ: Обновления ниже, декорации, похоже, значительно изменились.


У меня Ubuntu 20.04, и я установил Python 3.10 вручную. В системе уже есть python 2, и это то, что я получу, если просто выполню питон в командной строке, а не питон3. Однако у меня есть только версия pip, специфичная для python3.

У меня есть программа, которую я хочу запустить (чирикать), написанную на python2. Он жалуется на отсутствие серийной библиотеки:

$ ./щебет
Traceback (последний последний вызов):
  Файл "./chirpw", строка 24, в <module>
    из импорта chirp.drivers *
  Файл "/home/simon/chirp-daily-20220103/chirp/drivers/idrp.py", строка 16, в <module>
    серийный номер импорта
ImportError: нет модуля с именем серийный

Однако, если я попытаюсь получить этот модуль с помощью pip, я закончу работу pip3 и получу версию этого модуля для python3.

Как мне добавить библиотеку специально для python2 (и убедиться, что полученная библиотека является библиотекой python2)?

Я полагаю, что «лучшим» способом может быть создание виртуальной среды специально для этой конкретной программы, но я не знаю, как это сделать и в случае с уже существующей программой.

Любые указатели с благодарностью принимаются.


РЕДАКТИРОВАТЬ. Я нашел эту страницу: настройка pipenv и virtualenvironments и я, кажется, продвинулся вперед. Теперь у меня, похоже, есть реальная виртуальная среда, построенная вокруг /usr/bin/python (то есть python2.7), и с ее помощью работал pip -install serial. Однако после этого он теперь жалуется, что не может найти модуль gtk, и попытка загрузить этот модуль не удалась, говоря, что такого модуля нет:

(venv): ~/chirp-daily-20220103$ python -m pip install gtk
УСТАРЕВАНИЕ:[...]
ОШИБКА: Не удалось найти версию, удовлетворяющую требованию gtk (из версий: нет)
ОШИБКА: для gtk не найдено подходящего дистрибутива

Затем я попробовал версию с плоским пакетом, но плоский пакет у меня вообще не работает.Я открою другой вопрос по этому поводу, так как мы уже далеко от темы моего первоначального вопроса.

Спасибо всем, кто пытался помочь :)

Dave avatar
флаг za
Проверьте этот ответ, чтобы добавить пакет для пакетов python 2.7, не включенных в Ubuntu 20.04 https://stackoverflow.com/a/64297311/4576663
флаг be
@ Дэйв, да, я выполнил ручную установку из исходного пакета, и «инструкции» просто говорят, что ./chirpw должен работать, но это не так.
Dave avatar
флаг za
Да, я прочитал их, а затем просмотрел код и понял, что он запускает сам python2. Я думаю, что недостающий пункт для python2 доставляет вам трудности, см. Мой комментарий выше для ссылки на помощь в его установке.
Dave avatar
флаг za
«Однако после этого он теперь жалуется, что не может найти модуль gtk». Да, я много занимался разработкой pygobject (gtk) на python, и доступ к gtk из venv сопряжен с собственными кошмарами. Это за пределами моей рулевой рубки, чтобы помочь вам разобраться в этой среде.
Рейтинг:1
флаг zw

Как мы уже знаем ЧИРП также предоставляется как Flatpak, и этот метод установки это проще.

Но если вы все еще хотите продолжить установку из исходного tar-шара - используйте следующие команды:

sudo apt-получить обновление
sudo apt-get установить python2 python2-dev python-is-python2

компакт-диск ~/Загрузки
# три команды ниже загрузят старые пакеты из репозитория 18.04 LTS
wget -c http://archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python-serial_3.4-2_all.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-5.1ubuntu2_amd64.deb
sudo apt-get install ./python-serial_3.4-2_all.deb ./python-gtk2_2.24.0-5.1ubuntu2_amd64.deb

wget -c https://trac.chirp.danplanet.com/chirp_daily/LATEST/chirp-daily-20220103.tar.gz
tar -xf chirp-daily-20220103.tar.gz
cd chirp-daily-20220103/
установка sudo python2 setup.py

а затем запустите CHIRP из приложений или меню Brisk.

флаг be
Это, безусловно, отлично подходит для тех, для кого работает flatpak. К сожалению, сам по себе flatpak не работает для меня на самом базовом уровне, и непонятно, почему.
Рейтинг:0
флаг cn

Вы можете запустить точка через Python, выполнив питон -м пункт. Это запустит версию Python 2. Например, если питон перешел на Python 2, и вы хотели использовать версию Python 2 точка установить pyserial библиотека, вы можете сделать это:

$ python -m pip установить pyserial

Чтобы понять, что он делает, см. справочная страница Python

-m имя-модуля
       Ищет sys.path для названного модуля и запускает
       соответствующий файл .py в качестве скрипта.
Dave avatar
флаг za
Это предполагает, что у OP установлен pip для python2, если нет, это не сработает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.