Puncte:4

Rulați un program Python2 cu Python3?

drapel be

EDIT: Actualizări de mai jos, peisajul pare să se fi schimbat semnificativ.


Am Ubuntu 20.04 și am instalat manual Python 3.10. Există deja python 2 în sistem și asta primesc dacă pur și simplu execut piton la o linie de comandă, mai degrabă decât python3. Cu toate acestea, se pare că am doar o versiune de pip care este specifică pentru python3.

Am un program pe care vreau să-l rulez (chirp) care este scris în python2. Se plânge de lipsa unei biblioteci seriale:

$ ./chirpw
Traceback (cel mai recent apel ultimul):
  Fișierul „./chirpw”, linia 24, în <modul>
    din importul chirp.drivers *
  Fișierul „/home/simon/chirp-daily-20220103/chirp/drivers/idrp.py”, rândul 16, în <modul>
    import serial
ImportError: Niciun modul numit serial

Cu toate acestea, dacă încerc să obțin acest modul cu pip, ajung să ruleze pip3 și obțin versiunea python3 a acestui modul.

Cum ar trebui să procedez pentru a adăuga o bibliotecă la python2 în mod specific (și să mă asigur că biblioteca care este preluată este biblioteca python2)?

Presupun că cea mai „cea mai bună” modalitate ar putea fi crearea unui mediu virtual special pentru acest program, dar nu știu cum să fac asta nici în cazul unui program preexistent.

Orice indicații sunt acceptate cu recunoștință.


EDITAȚI | ×. Am gasit aceasta pagina: configurarea pipenv și medii virtuale și se pare că am mers înainte. Acum se pare că am un mediu virtual real construit în jurul /usr/bin/python (care este python2.7), iar folosindu-l, pip -install serial a funcționat. Cu toate acestea, după ce a făcut acest lucru, acum se plânge că nu poate găsi modulul gtk, iar încercarea de a încărca acel modul eșuează spunând că nu există un astfel de modul:

(venv) :~/chirp-daily-20220103$ python -m pip install gtk
DEZAPROBARE:[...]
EROARE: Nu s-a putut găsi o versiune care îndeplinește cerința gtk (din versiuni: niciuna)
EROARE: Nu a fost găsită nicio distribuție potrivită pentru gtk

Apoi am încercat versiunea flatpak a acesteia, dar flatpak nu funcționează deloc pentru mine.Voi deschide o altă întrebare cu privire la asta, deoarece acum suntem departe de subiectul întrebării mele inițiale.

Mulțumesc tuturor celor care au încercat să ajute :)

Dave avatar
drapel za
Verificați acest răspuns pentru a adăuga pip pentru pachetele Python 2.7 care nu sunt incluse în Ubuntu 20.04 https://stackoverflow.com/a/64297311/4576663
drapel be
@Dave da, am făcut instalarea manuală din pachetul sursă, iar „instrucțiunile” pur și simplu spun că ./chirpw ar trebui să funcționeze, dar nu funcționează.
Dave avatar
drapel za
Da, le-am citit și apoi am săpat prin cod și mi-am dat seama că rula python2 în sine. Cred că este pip-ul lipsă pentru python2 care vă dă greu, vedeți comentariul meu de mai sus pentru un link pentru ajutor la instalarea acestuia.
Dave avatar
drapel za
„Cu toate acestea, după ce a făcut asta, acum se plânge că nu poate găsi modulul gtk,” Da, am făcut o mulțime de dezvoltare pygobject (gtk) în python și accesarea gtk din interiorul unui venv vine cu propriile coșmaruri. Este în afara casei mele pentru a te ajuta să mergi în acel mediu.
Puncte:1
drapel zw

După cum știm deja CIRIPIT este, de asemenea, furnizat ca Flatpak și această metodă de instalare este mai usor.

Dar dacă tot doriți să continuați cu instalarea din tar-ball sursă - utilizați comenzile de mai jos:

sudo apt-get update
sudo apt-get install python2 python2-dev python-is-python2

cd ~/Descărcări
Comanda # trei de mai jos va descărca pachetele vechi din depozitul 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 install

și apoi lansați CHIRP din meniul Aplicații sau Brisk.

drapel be
Acest lucru este cu siguranță grozav pentru oricine pentru care funcționează flatpak. Din păcate, flatpak în sine eșuează la un nivel de bază pentru mine și nu este clar de ce.
Puncte:0
drapel cn

Poți să alergi pip prin Python făcând python -m pip. Aceasta va rula versiunea Python 2. De exemplu, dacă piton a mers la Python 2 și ați vrut să utilizați versiunea Python 2 a pip pentru a instala piserial bibliotecă, ai putea face asta:

$ python -m pip install pyserial

Pentru a înțelege ce face asta, vezi pagina de manual Python

-m nume-modul
       Caută sys.path pentru modulul numit și rulează
       fișierul .py corespunzător ca script.
Dave avatar
drapel za
Acest lucru presupune că OP are pip pentru python2 instalat, dacă nu are, acest lucru nu va funcționa.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.