Điểm:4

Chạy chương trình Python2 với Python3?

lá cờ be

CHỈNH SỬA: Cập nhật bên dưới, khung cảnh dường như đã thay đổi đáng kể.


Tôi có Ubuntu 20.04 và đã cài đặt Python 3.10 theo cách thủ công. Đã có python 2 trong hệ thống và đó là những gì tôi nhận được nếu tôi thực hiện đơn giản con trăn tại một dòng lệnh, thay vì trăn3. Tuy nhiên, dường như tôi chỉ có một phiên bản pip dành riêng cho python3.

Tôi có một chương trình mà tôi muốn chạy (chirp) được viết bằng python2. Nó phàn nàn về việc thiếu thư viện nối tiếp:

$./chirpw
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "./chirpw", dòng 24, trong <module>
    từ chirp.drivers nhập *
  Tệp "/home/simon/chirp-daily-20220103/chirp/drivers/idrp.py", dòng 16, trong <module>
    nhập nối tiếp
ImportError: Không có mô-đun nào có tên nối tiếp

Tuy nhiên, nếu tôi cố lấy mô-đun này bằng pip, tôi sẽ kết thúc bằng việc chạy pip3 và nhận phiên bản python3 của mô-đun này.

Tôi nên làm cách nào để thêm thư viện vào python2 một cách cụ thể (và đảm bảo rằng thư viện được tìm nạp là thư viện python2)?

Tôi cho rằng cách "tốt nhất" có thể là tạo một môi trường ảo dành riêng cho chương trình cụ thể này, nhưng tôi cũng không biết cách thực hiện điều đó trong trường hợp chương trình có sẵn.

Bất kỳ con trỏ biết ơn chấp nhận.


CHỈNH SỬA. Tôi tìm thấy trang này: thiết lập pipenv và môi trường ảo và tôi dường như đã tiến về phía trước. Bây giờ tôi dường như có một môi trường ảo thực tế được xây dựng xung quanh/usr/bin/python (là python2.7) và sử dụng nó, pip -install serial đã hoạt động. Tuy nhiên, sau khi thực hiện việc này, giờ đây nó phàn nàn rằng nó không thể tìm thấy mô-đun gtk và nỗ lực tải mô-đun đó không thành công và thông báo không có mô-đun nào như vậy:

(venv):~/chirp-daily-20220103$ python -m pip cài đặt gtk
KHÁM PHÁ:[...]
LỖI: Không thể tìm thấy phiên bản đáp ứng yêu cầu gtk (từ phiên bản: không có)
LỖI: Không tìm thấy phân phối phù hợp cho gtk

Tiếp theo, tôi đã thử phiên bản Flatpak của phiên bản này, nhưng Flatpak hoàn toàn không hoạt động với tôi.Tôi sẽ mở một câu hỏi khác về vấn đề đó, vì hiện tại chúng tôi đã hoàn thành chủ đề câu hỏi ban đầu của mình.

Cảm ơn tất cả những người đã cố gắng giúp đỡ :)

Dave avatar
lá cờ za
Kiểm tra câu trả lời này để thêm pip cho các gói python 2.7 không có trong Ubuntu 20.04 https://stackoverflow.com/a/64297311/4576663
lá cờ be
@Dave vâng, tôi đã cài đặt thủ công từ gói nguồn và "hướng dẫn" chỉ cần nói ./chirpw sẽ hoạt động, nhưng không được.
Dave avatar
lá cờ za
Vâng, tôi đã đọc qua chúng và sau đó tìm hiểu mã và nhận ra rằng nó đang chạy chính python2. Tôi nghĩ đó là pip bị thiếu cho python2 khiến bạn gặp khó khăn, hãy xem nhận xét ở trên của tôi để biết liên kết trợ giúp cài đặt nó.
Dave avatar
lá cờ za
"Tuy nhiên, sau khi thực hiện điều này, nó hiện phàn nàn rằng nó không thể tìm thấy mô-đun gtk," Vâng, tôi đã thực hiện rất nhiều phát triển pygobject (gtk) trong python và việc truy cập gtk từ bên trong venv đi kèm với cơn ác mộng của chính nó. Nó ở bên ngoài ngôi nhà bánh xe của tôi để giúp bạn di chuyển trong môi trường đó.
Điểm:1
lá cờ zw

Như chúng ta đã biết CHIP cũng được cung cấp dưới dạng Flatpak và phương pháp cài đặt này dễ dàng hơn.

Nhưng nếu bạn vẫn muốn tiến hành cài đặt từ nguồn tar-ball - hãy sử dụng các lệnh bên dưới:

sudo apt-get cập nhật
sudo apt-get cài đặt python2 python2-dev python-is-python2

cd ~/Tải xuống
# ba lệnh bên dưới sẽ tải xuống các gói cũ từ kho lưu trữ 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 cài đặt

và sau đó khởi chạy CHIRP từ menu Ứng dụng hoặc Nhanh.

lá cờ be
Điều này chắc chắn là tuyệt vời cho bất cứ ai mà flatpak làm việc. Đáng buồn thay, bản thân Flatpak lại thất bại ở mức cơ bản nhất đối với tôi và không rõ tại sao.
Điểm:0
lá cờ cn

Bạn có thể chạy píp thông qua Python bằng cách thực hiện python -m pip. Điều đó sẽ chạy phiên bản Python 2. Ví dụ, nếu con trăn đã chuyển sang Python 2 và bạn muốn sử dụng phiên bản Python 2 của píp để cài đặt hỏa ngục thư viện, bạn có thể làm điều này:

$ python -m pip cài đặt pyserial

Để hiểu nó đang làm gì, hãy xem trang Python

-m tên mô-đun
       Tìm kiếm sys.path cho mô-đun được đặt tên và chạy
       tệp .py tương ứng dưới dạng tập lệnh.
Dave avatar
lá cờ za
Điều này giả định rằng OP đã cài đặt pip cho python2, nếu không, điều này sẽ không hoạt động.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.