Công cụ cài đặt gói pip phải được chạy từ dòng lệnh (command line). Nếu bạn cố gắng cài đặt gói từ trình thông dịch Python (Python interpreter) hoặc trong chương trình Python, bạn sẽ gặp lỗi SyntaxError: invalid syntax.
Trong hướng dẫn này, chúng ta sẽ thảo luận nguyên nhân của lỗi pip install invalid syntax và ý nghĩa của nó. Chúng ta sẽ đi qua một ví dụ để bạn học cách sửa lỗi trong mã của mình.
pip install invalid syntax
Python pip là trình cài đặt gói (package installer). Công cụ pip cho phép bạn tải xuống và cài đặt các gói từ Python Package Index, nơi có hàng nghìn thư viện có sẵn để bạn sử dụng trong mã.
Công cụ pip chạy như một giao diện dòng lệnh (command line interface) riêng biệt. pip tách biệt với cài đặt Python của bạn. Điều này là vì pip là một trình cài đặt chứ không phải công cụ thực thi mã.
Nếu các công cụ này được gom lại với nhau, sẽ gây nhầm lẫn cho các nhà phát triển muốn cài đặt gói vì cú pháp tương tự dùng để khởi động chương trình Python cũng sẽ áp dụng cho việc cài đặt mô-đun.
Hành vi này phổ biến trong các môi trường lập trình. Node.js dựa vào npm để cài đặt gói. Để chạy chương trình dùng Node.js, bạn cần dùng lệnh node.
Ví dụ thực tế
Chúng ta sẽ cài đặt thư viện Beautiful Soup 4 (bs4) trong môi trường phát triển. Thư viện này cho phép bạn cào (scrape) trang web và truy xuất các phần dữ liệu cụ thể.
Đầu tiên, mở shell Python 3. Trong shell này, chúng ta sẽ thực hiện tất cả công việc cho dự án:
python3
Một shell tương tác được mở, nơi chúng ta có thể viết mã Python:
Python 3.8.5 (v3.8.5:580fbb018f, Jul 20 2020, 12:11:27) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
Tiếp theo, nhập thư viện bs4 vào mã. Chúng ta phải nhập bất kỳ thư viện bên ngoài nào muốn dùng trước khi tham chiếu chúng trong chương trình hoặc shell. Lệnh nhập gói bs4:
>>> from bs4 import BeautifulSoup Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'bs4'
Mã trả về ModuleNotFoundError khi cố nhập gói. Nghĩa là không thể tiếp tục viết chương trình. Python không thể tìm thấy các mô-đun gói cần thiết. Hãy khắc phục lỗi này bằng cách cài đặt thư viện bs4:
>>> pip install bs4
Lệnh này dẫn đến lỗi khác:
File "", line 1 pip3 install bs4 ^ SyntaxError: invalid syntax
Có vẻ như không thể cài đặt bs4 bằng lệnh pip3 trong shell Python. pip3 là trình cài đặt gói cho gói Python 3.
Giải pháp
Chúng ta đã cố cài đặt gói bs4 từ trình thông dịch Python.
Bạn có thể nhận ra vì chúng ta đã mở Python 3 bằng lệnh python3 sau đó thực hiện lệnh pip3 install.
Python trả về lỗi pip install invalid syntax vì pip không phải là từ khóa trong Python. pip là công cụ dòng lệnh phải được chạy từ shell dòng lệnh.
Để sửa lỗi này, trước tiên phải thoát khỏi shell Python:
>>> exit()
Lệnh exit() yêu cầu Python đóng trình thông dịch đang mở. Tiếp theo, chúng ta có thể cài đặt bs4 từ dấu nhắc lệnh (command prompt):
pip3 install bs4
Lệnh này sẽ cài đặt thư viện pip vào hệ thống. Sau khi lệnh thực thi xong, chúng ta có thể mở shell Python mới:
python3
Shell mới nên có quyền truy cập vào thư viện bs4. Chúng ta có thể kiểm tra bằng cách nhập bs4 vào mã:
>>> from bs4 import BeautifulSoup >>>
Không có lỗi nào được ném ra. Nghĩa là nhập thành công. Chúng ta có thể dùng bs4 trong chương trình.
Kết luận
Lỗi pip install invalid syntax xảy ra khi bạn cố cài đặt gói Python từ trình thông dịch. Để khắc phục, hãy thoát trình thông dịch và chạy lệnh pip install từ shell dòng lệnh.
Bây giờ bạn đã có chuyên môn để giải quyết lỗi này như một lập trình viên chuyên nghiệp!