2014-08-31 58 views
7

Tôi đang chuyển một ứng dụng Python 2 sử dụng PyQt5 từ Linux sang Windows.Làm thế nào để cài đặt PyQt5 trên Windows cho Python 2?

Câu hỏi: Làm cách nào để cài đặt PyQt5 trên Windows?

Những gì tôi đã cố gắng:

  1. pip install PyQt5 không thành công với:

    Downloading/unpacking PyQt5 
        Could not find any downloads that satisfy the requirement PyQt5 
    Cleaning up... 
    No distributions at all found for PyQt5 
    Storing debug log for failure in C:\Users\user\pip\pip.log 
    
  2. Tìm kiếm một cửa sổ cài đặt on the official website, nhưng chỉ có PyQt4 trình cài đặt sẵn cho Python 2.

Tôi phải làm gì?

Trả lời

13

Đây là một câu hỏi rất cũ, nhưng tôi đã xem qua câu hỏi này với câu trả lời hợp lý một tuần trước tôi đã thấy nó rất hữu ích. Đây là những gì tôi đã làm để đạt được kết quả mong muốn. Như bạn đã lưu ý, không có các gói được hỗ trợ cho PyQt5 và Python 2.7, do đó bạn sẽ phải tự xây dựng nó. Rất may quá trình này khá đơn giản. Giả sử, bạn đã cài đặt Python 2.7.

  1. Bạn sẽ cần cài đặt MS Visual C++ hợp lệ. Tôi có phiên bản chuyên nghiệp nhưng tôi cho rằng phiên bản cộng đồng cũng sẽ hoạt động.
  2. Bạn sẽ cần phải có phiên bản qt thích hợp. Nếu bạn đang sử dụng 32 bit Python đảm bảo rằng bạn nhận được 32 bit Qt. Ngoài ra, (mặc dù tôi nghĩ rằng nó không quan trọng), tôi đã chắc chắn để có được phiên bản của Qt được xây dựng với phiên bản tương tự của trình biên dịch MSVC mà tôi có. Điều này có thể quan trọng nếu có bất kỳ liên kết tĩnh nào giữa cài đặt Qt và PyQt (có thể dẫn đến việc không tương thích nhị phân của các tệp đối tượng được liên kết.) Nhận Qt từ http://download.qt.io/ Lưu ý rằng Qt có thêm cân nhắc về cấp phép, vì vậy bạn có thể muốn hãy xem https://www.qt.io/download/ trước tiên.
  3. Đảm bảo rằng thư mục con bin của cài đặt Qt của bạn nằm trong đường dẫn hệ thống của bạn.
  4. Lấy nguồn cho SIP. SIP có sẵn từ riverbankcomputing.com. Tôi đã sử dụng phiên bản 4.18.
  5. Có ba lệnh để xây dựng và cài đặt SIP. Không chạy các lệnh này từ một trình bao tiêu chuẩn, thay vào đó, hãy sử dụng lệnh của công cụ Visual Studio, để đường dẫn của bạn bao gồm trình biên dịch và cũng để các biến môi trường INCLUDE, LIBS và LIBPATH được đặt.

    python configure.py

    Nếu bạn đang sử dụng một môi trường ảo cho Python bạn có thể phải thay đổi makefile cho SIPLib vì nó mã cứng phụ thuộc vào vị trí của Python bao gồm thư mục con và các thư mục con libs. Tôi đã chọn để chỉ cho họ tại Python hệ thống cài đặt (c: \ Python27 \ include và c: \ Python27 \ libs.) Bây giờ Nó phải là đơn giản như

    nmake

    nmake install

    Phần cuối của bước này là để kiểm tra xem chương trình sip.exe đã được đặt trong một vị trí là một phần của đường dẫn của bạn (điều này có thể chỉ là một vấn đề nếu bạn đang sử dụng môi trường Python ảo).)

  6. Lấy nguồn cho phiên bản PyQt tương ứng với phiên bản Qt mà bạn đã nhận trước đó. Nó có sẵn từ dự án PyQt trên sourceforge, và phiên bản mới nhất có sẵn từ riverbankcomputing.com.

  7. Lặp lại cùng quá trình:

    python configure.py

    nmake

    nmake install

    mà bạn sử dụng để xây dựng SIP. Trong trường hợp này, số lượng các makefiles được tạo ra quá lớn (tất cả có khả năng sai vị trí của tệp python27.lib và các tiêu đề, tùy thuộc vào môi trường ảo của bạn.) Tôi vừa sao chép tệp python27.lib vào vị trí các makefiles mong đợi. Tương tự, có ba ứng dụng được cài đặt ở một vị trí không phải là một phần của đường dẫn hệ thống (pyuic5, pyrcc5 và pylupdate5) và tôi cũng sao chép chúng vào một vị trí trong đường dẫn.

Xong. Bạn sẽ có thể xây dựng ứng dụng PyQt5/Python2.7 của mình.

+0

Rất hữu ích! Lưu ý: Sử dụng Python 64 bit 2,7, Qt/PyQt 5.7.1, nhâm nhi 4.19, Cộng đồng MSVC 2015, tôi đã phải sử dụng "python configure.py --disable = QtNfc" cho PyQt5, nếu không bản dựng sẽ thất bại. Điều tương tự cũng xảy ra với những người khác: https://www.riverbankcomputing.com/pipermail/pyqt/2015-August/036222.html – pixelbrei

+0

Điểm 6 sai: PyQt5 không đồng bộ hóa các phiên bản với Qt5. – ekhumoro

+0

Một năm quá muộn, nhưng tôi đánh dấu này là chấp nhận b/c Tôi không có quyền truy cập vào cửa sổ nữa :) –

Các vấn đề liên quan