Lệnh python3 không tìm thấy
Tôi đã bắt đầu quay trở lại quá trình phát triển Python khi tôi sẵn sàng đến với PyCon US. (Nếu bạn cũng đang hướng đến đó và muốn chia sẻ câu chuyện về Python của mình, hãy cho tôi biết. ) Khi tôi cài đặt một mô-đun để mày mò, tôi nhận được lời nhắc rằng tôi cần sớm cài đặt Python 3 Show
Vì vậy, tôi đã làm những gì mà bất kỳ ai trong chúng tôi sẽ làm và tìm kiếm trên Google để tìm hướng dẫn cập nhật môi trường phát triển của mình, chạy trên Mac (hệ điều hành macOS, trước đây gọi là OS X). Thật ngạc nhiên, tôi chỉ tìm thấy một số bài đăng trên StackOverflow và họ đã chỉ cho tôi các giải pháp từng phần. Đây là câu chuyện đầy đủ về cách thiết lập môi trường của bạn mà không vi phạm bất kỳ thứ gì được tích hợp trong hệ điều hành macOS 1. Cài đặt pyenvMoshe Zadka cảnh báo rằng làm sai điều này có thể dẫn đến ý tưởng không đáng tin cậy về việc Python đang chạy phụ thuộc quá chặt chẽ vào bí danh tải shell. Tôi biết Moshe đã quen thuộc với Python, nhưng điều tôi không biết là anh ấy là tác giả của nhiều hướng dẫn về Python cũng như một cuốn sách sắp ra mắt về phát triển Python trên macOS. Anh ấy đã giúp 40 đồng nghiệp phát triển Python một cách an toàn và nhất quán trên các hệ thống macOS theo một nguyên tắc cốt lõi
Làm thế nào để chúng ta ngừng quan tâm đến mặc định? . Công cụ này quản lý nhiều phiên bản Python và được mô tả là "đơn giản, không phô trương và tuân theo truyền thống của Unix về các công cụ có mục đích duy nhất thực hiện tốt một việc. " Trong khi có sẵn những cách khác, cách dễ nhất để bắt đầu là với Homebrew
2. Cài đặt PythonBây giờ hãy cài đặt phiên bản Python mới nhất (3. 7. 3 kể từ khi viết bài này)
3. Đặt mặc định toàn cầu của bạnBây giờ Python 3 đã được cài đặt thông qua pyenv, chúng tôi muốn đặt nó làm phiên bản mặc định toàn cầu cho môi trường pyenv
Sức mạnh của pyenv đến từ sự kiểm soát của nó đối với đường đi của shell của chúng ta. Để nó hoạt động chính xác, chúng tôi cần thêm phần sau vào tệp cấu hình của mình (. zshrc cho tôi, có thể. bash_profile cho bạn)
Sau lệnh đó, dotfile của chúng tôi (. zshrc cho zsh hoặc. bash_profile cho Bash) nên bao gồm những dòng này
Bây giờ chúng tôi biết chắc chắn rằng chúng tôi đang sử dụng Python 3. 7. 3 và pip sẽ cập nhật cùng với nó mà không có bất kỳ răng cưa thủ công nào giữa các phiên bản. Sử dụng đề xuất của Moshe để sử dụng trình quản lý phiên bản (pyenv) cho phép chúng tôi dễ dàng chấp nhận các bản nâng cấp trong tương lai mà không bị nhầm lẫn về Python nào chúng tôi đang chạy tại một thời điểm nhất định Sự thành côngKhi cảm thấy thoải mái với quy trình làm việc này, bạn có thể sử dụng pyenv để quản lý nhiều phiên bản Python. Để quản lý phụ thuộc, việc sử dụng môi trường ảo cũng rất cần thiết. Tôi đã đề cập đến cách sử dụng thư viện venv tích hợp trong bài viết và Moshe đề xuất virtualenvwrapper để quản lý môi trường ảo Hiểu thời gian chạy PythonBây giờ bạn đã sửa các phiên bản Python của mình, bạn có thể yên tâm khám phá lý do tại sao vấn đề này lại khiến nhiều người nhầm lẫn Phiên bản Python đi kèm với macOS đã lỗi thời so với những gì Python khuyến nghị sử dụng để phát triển. Đôi khi, việc cân nhắc thời gian chạy Python có thể là một thách thức hài hước, như XKCD đã lưu ý Nhiều người dùng đã có hàng tá trình thông dịch Python trên máy tính nhưng không biết cách quản lý chúng hiệu quả. Thông thường, mọi người chỉ cần tải xuống bản phát hành Python mới nhất, di chuyển nó đến đường dẫn của họ và gọi nó là một ngày (hoặc sử dụng brew install python3, thao tác này sẽ thực hiện tương tự). Điều này có thể gây ra sự cố trong dây chuyền theo những cách khó chịu và khó khắc phục sự cố Những gì không làmÝ tưởng đầu tiên của tôi về cách biến Python 3 thành Python mặc định trên hệ thống của tôi là di chuyển phiên bản cũ và thêm phiên bản mới
Mô hình tuân theo những gì /usr/bin/ thường thực hiện giữa các bản phát hành chính của Python, nhưng tôi nhanh chóng nhận ra rằng đó là một bước đi sai lầm
Rất may, macOS đã bảo vệ tôi khỏi vi phạm điều gì đó mà tôi không hiểu hết. Nghiên cứu sâu hơn chứng minh đây chính xác là điều chúng ta không nên làm Một điều khác không nên thửLập trình và phát triển
Bây giờ chúng ta biết những gì không nên làm, hãy xem những gì chúng ta có thể làm. Có một số tùy chọn khi chúng tôi nghĩ về các mẫu cài đặt phổ biến cho các ứng dụng trên macOS Sử dụng Python 3 làm mặc định macOSTrang web của Python có trình cài đặt macOS Python 3, chúng tôi có thể tải xuống và sử dụng. Nếu chúng tôi sử dụng cài đặt gói, phần điền python3 sẽ có sẵn trong /usr/local/bin/ Bí danh là bắt buộc vì nhị phân Python được lưu trữ trong /usr/bin/ không thể thay đổi. Điều thú vị về một bí danh là nó dành riêng cho shell dòng lệnh của chúng ta. Vì tôi sử dụng zsh theo mặc định, nên tôi đặt phần sau vào. tập tin zshrc ________số 8_______Nếu bạn đang sử dụng shell Bash mặc định, bạn có thể nối thêm văn bản này vào. bashrc
Chiến lược này hoạt động, nhưng nó không lý tưởng để thực hiện các bản cập nhật trong tương lai cho Python. Điều đó có nghĩa là chúng ta phải nhớ kiểm tra trang web và tải xuống các tệp mới vì Python không bao gồm cách cập nhật bằng dòng lệnh Để Homebrew quản lý Python 3Dự án Homebrew cung cấp trình quản lý gói nguồn mở và miễn phí cho macOS mà nhiều người tin dùng. Nó cung cấp cho người dùng Apple một sức mạnh tương tự như apt-get hoặc yum. Nếu bạn là người dùng Homebrew, bạn có thể đã cài đặt Python. Để kiểm tra nhanh, hãy chạy 0Nếu Python hiển thị dưới lệnh, nó đã được cài đặt. Nó là phiên bản gì? 1Rất tốt. Những người bảo trì Homebrew đã cập nhật chai Python mặc định để trỏ đến bản phát hành mới nhất. Vì những người bảo trì Homebrew đáng tin cậy hơn trong việc cập nhật bản phát hành so với hầu hết chúng ta, nên chúng ta có thể sử dụng phiên bản Python 3 của Homebrew bằng lệnh sau 2Bây giờ chúng tôi muốn trỏ bí danh của mình (từ trên xuống) tới bản sao Python mà Homebrew quản lý 3Để đảm bảo đường dẫn trên trỏ đến nơi Homebrew đã cài đặt Python trong môi trường của chúng ta, chúng ta có thể chạy brew info python và tìm kiếm thông tin đường dẫn Phương pháp này, sử dụng Homebrew để quản lý môi trường Python của chúng tôi, là một điểm khởi đầu tốt và nó có ý nghĩa với tôi vào thời điểm đó Nếu chúng ta vẫn cần Python 2 thì sao?Bất kỳ ai mới sử dụng Python đều có thể bắt đầu với Python 3. Nhưng những người trong chúng ta, những người vẫn cần Python 2—ví dụ: để đóng góp cho một dự án Python chỉ có sẵn trong Python 2—có thể tiếp tục sử dụng tệp nhị phân Python macOS mặc định có sẵn trong /usr/bin/python 4Homebrew thật tuyệt vời, nó thậm chí còn cung cấp một công thức khác cho Python 2 5Bất cứ lúc nào, chúng tôi có thể xóa bí danh khỏi tệp cấu hình shell của mình để quay lại sử dụng bản sao mặc định của Python trên hệ thống Đừng quên cập nhật pip lên pip3Lệnh pip là trình quản lý gói mặc định dành riêng cho các gói Python. Mặc dù chúng tôi đã thay đổi lệnh Python mặc định của mình thành phiên bản 3, nhưng chúng tôi phải đặt bí danh cho lệnh pip của mình nếu nó ở phiên bản trước. Trước tiên, chúng ta cần kiểm tra xem mình đang sử dụng phiên bản nào 6Để đảm bảo chúng tôi đang cài đặt các gói tương thích với phiên bản Python mới của chúng tôi, chúng tôi sẽ sử dụng một bí danh khác để trỏ đến phiên bản tương thích của pip. Vì chúng tôi đang sử dụng Homebrew làm trình quản lý gói trong tình huống này, nên chúng tôi biết nó đã cài đặt pip3 khi chúng tôi cài đặt Python 3. Đường dẫn mặc định phải giống với Python 3, nhưng chúng ta có thể xác nhận điều này bằng cách yêu cầu trình bao tìm thấy nó 7Bây giờ chúng tôi đã biết vị trí, chúng tôi sẽ thêm nó vào tệp cấu hình trình bao của chúng tôi, như chúng tôi đã làm trước đây 8Cuối cùng, chúng ta có thể xác nhận rằng việc chạy pip trỏ đến pip3 bằng cách mở trình bao mới hoặc bằng cách đặt lại trình bao hiện tại của chúng ta và xem những gì chúng ta trỏ đến 9Chúng tôi có thể tránh sử dụng Homebrew để cập nhật pip, nhưng điều đó đòi hỏi nhiều từ tài liệu Python Làm ngay từ đầuNếu bạn mới bắt đầu phát triển Python trên macOS, hãy thực hiện các cấu hình cần thiết để đảm bảo bạn đang sử dụng đúng phiên bản Python ngay từ đầu. Cài đặt Python 3, có hoặc không có Homebrew và sử dụng bí danh sẽ cho phép bạn bắt đầu viết mã, nhưng đó không phải là một chiến lược tốt về lâu dài. Sử dụng pyenv như một giải pháp quản lý phiên bản đơn giản để giúp bạn có một khởi đầu thuận lợi Bài viết này ban đầu được xuất bản vào tháng 5 năm 2019 và đã được cập nhật bởi biên tập viên Đọc gì tiếp theo Thẻ con trăn Mac Matthew Broberg Matt là một chuyên gia lưu trữ EMC, VMware vExpert và là người hâm mộ trước đây của các công nghệ độc quyền khác. Bây giờ anh ấy tập trung vào mã nguồn mở và việc áp dụng DevRel Thêm về tôi Moshe Zadka Moshe đã tham gia vào cộng đồng Linux từ năm 1998, giúp đỡ trong "các bữa tiệc cài đặt" Linux. Anh ấy đã lập trình Python từ năm 1999 và đã đóng góp cho trình thông dịch Python cốt lõi. Moshe đã là một DevOps/SRE kể từ trước khi các điều khoản đó tồn tại, quan tâm sâu sắc đến độ tin cậy của phần mềm, khả năng tái tạo bản dựng và những thứ tương tự khác Thêm về tôi người đóng gópSeth Kenlon Những bình luận này đã bị đóng, tuy nhiên bạn có thể Đăng ký hoặc Đăng nhập để đăng bình luận về một bài viết khác Don Watkins. 1 Tháng Năm, 2019 Đăng ký hoặc Đăng nhập để thích Bài báo tuyệt vời. Cám ơn vì đã chia sẻ jhnlsn11. 3 Tháng Năm, 2019 Đăng ký hoặc Đăng nhập để thích Gặp sự cố ngay lập tức với zlib. Đối với bất kỳ ai gặp lỗi tương tự, bạn có thể tìm giải pháp tại trang vấn đề github của pyenv. Số phát hành 1219 Michael Heinz. 11 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Chỉ muốn nói lời cảm ơn cho hướng dẫn. Bây giờ tôi mới bắt đầu học viết mã trăn và muốn bắt đầu bằng chân phải về phía trước Có thể bạn quan tâmJay. 14 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Cảm ơn đã dành thời gian và viết bài hướng dẫn này. Tôi chỉ muốn thêm xem có ai gặp sự cố nhỏ này không. Ngay trước "exec $SHELL", tôi phải thoát khỏi iTerm2 hoàn toàn để có được 3. 7. 4 báo cáo. Tôi nghĩ rằng tôi có thể làm nguồn ~/. zshrc. tôi đã không cố gắng Matthew Broberg. 23 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Cảm ơn vì đã cho tôi biết Jay. Tôi tin rằng exec phải đủ để khởi tạo trình bao mới trong phiên hiện tại, nhưng nguồn chắc chắn sẽ tải lại thông tin từ tệp Trả lời bởi Jay (chưa xác minh) Matthew Broberg. 23 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Tôi thấy những gì đã đi sai bây giờ. `$SHELL` được đặt thành trình bao mặc định, đây có thể không phải là trình bao bạn hiện đang sử dụng. Tôi đã điều chỉnh nó thành `exec $0` để $0 phát hiện trình bao hiện tại, không phải trình bao mặc định. Cảm ơn một lần nữa hoặc lưu ý điều này Jay Trả lời bởi Matthew Broberg Carlos Vázquez. 14 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Nếu tôi đặt #. /usr/bin/python trên tập lệnh, liệu python 3. 7 được quản lý bởi pyenv Matthew Broberg. 23 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích không may măn. Nếu bạn chạy ` which python` bạn sẽ nhận được một đường dẫn rất khác. Tôi không thể gọi đường dẫn đó từ zsh, vì vậy tôi đã học cách sử dụng `#. /usr/bin/env python` là câu lệnh shebang của tôi và nó gọi phiên bản pyenv đã kích hoạt. (Tín dụng. https. // stackoverflow. com/câu hỏi/44076804/what-shebang-to-use-for-py…) Trả lời bởi Carlos Vazquez (chưa được xác minh) Affan Javid. 15 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích công việc rất tốt cảm ơn rất nhiều Steve Holden. 16 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Moshe đã đúng. Vui lòng KHÔNG BAO GIỜ sử dụng hệ thống Python để phát triển. Ngay cả với môi trường ảo. Bạn muốn có thể chuyển đổi phiên bản theo ý muốn Sử dụng "python -m pip" thay vì chạy "pip" hoặc "pip3" - theo cách đó, phiên bản pip và python luôn khớp với nhau, bất kỳ phiên bản nào bạn hiện đã chọn là "python" Tôi cũng khuyên bạn nên xem Conda - nó đặc biệt hữu ích cho những người không quen với quản trị hệ thống Mascarina Arturo. 20 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Thêm khoảng trống trước từ khóa eval khi sử dụng pyenv để kiểm soát đường dẫn shell. Đảm bảo xóa nó, nếu không bạn sẽ thấy "không tìm thấy lệnh eval". Đảm bảo rằng bạn cũng nối đầu ra vào tệp rc chính xác. ) Sourav Ganguly. 29 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Tôi đã làm tất cả các bước như đã đề cập và họ đã hiển thị mọi thứ với python 3. 7, ngoại trừ khi cuối cùng tôi thực hiện python -V, nó vẫn hiển thị phiên bản là 2. 7. Bất kỳ ý tưởng làm thế nào tôi có thể ghi đè lên phiên bản python? Matthew Broberg. 29 Tháng Bảy, 2019 Đăng ký hoặc Đăng nhập để thích Này Sauav. Khi bạn chạy ` which python` nó có hiển thị đường dẫn shim hay đường dẫn trực tiếp đến /usr/bin/python không? . bashrc hoặc. zshrc tùy thuộc vào vỏ của bạn |