HomeLập trìnhPythonCách quản lý...

Cách quản lý nhiều phiên bản Python và môi trường ảo


Bổ sung vào tháng 1 năm 2019: Nếu bạn quay lại blog này sau khi nâng cấp lên macOS Mojave, vui lòng xem vấn đề github này để biết giải pháp cho vấn đề ‘zlib không khả dụng’ phổ biến của pyenv.

Trước khi bắt đầu, chúng ta hãy xem qua các thuật ngữ được sử dụng trong tiêu đề:

  • Nhiều phiên bản Python: Các bản cài đặt Python khác nhau trên cùng một máy, ví dụ 2.7 và 3.4.
  • môi trường ảo: các môi trường độc lập biệt lập có thể có cả phiên bản Python cụ thể và bất kỳ gói dành riêng cho dự án nào được cài đặt bên trong chúng mà không ảnh hưởng đến bất kỳ dự án nào khác.

Ở đây chúng ta sẽ xem xét ba công cụ khác nhau để làm việc với những công cụ này và khi nào bạn có thể cần đến từng công cụ đó. Hãy khám phá các trường hợp sử dụng cho:

  • venv / pyvenv
  • pyenv
  • pyenv-virtualenv

Nếu bạn đang sử dụng một phiên bản đơn của Python nói phiên bản 3.3+và muốn quản lý môi trường ảo khác nhau, sau đó venv là tất cả những gì bạn cần.

Nếu bạn muốn sử dụng nhiều phiên bản của Python tại 3.3+, có hoặc không có môi trường ảosau đó tiếp tục đọc về pyenv.

Nếu bạn cũng muốn làm việc với Trăn 2sau đó pyenv-virtualenv là một công cụ để xem xét.

venv

Từ Python 3.3 trở lên venv gói được bao gồm. Đó là lý tưởng để tạo môi trường ảo nhẹ.

Cho đến Python 3.6, một tập lệnh có tên pyvenv cũng được bao gồm như một lớp bọc xung quanh venv, nhưng điều này đã không được chấp nhận. Nó sẽ bị xóa hoàn toàn trong Python 3.8. Các chức năng chính xác tương tự có sẵn khi sử dụng venvvà mọi tài liệu hiện có phải được cập nhật. Đối với bất kỳ ai quan tâm, bạn có thể đọc lý do đằng sau việc khấu hao pyvenv.

venv được sử dụng để tạo một môi trường mới thông qua lệnh terminal:

$ python3 -m venv directory-name-to-create

kích hoạt với:

$ source name-given/bin/activate

và hủy kích hoạt chỉ bằng:

$ deactivate

Nếu bạn cần xóa hoàn toàn môi trường sau khi hủy kích hoạt nó, bạn có thể chạy:

$ rm -r name-given

Theo mặc định, môi trường mà nó tạo ra sẽ là phiên bản Python hiện tại mà bạn đang sử dụng. Nếu bạn đang viết tài liệu và muốn có thêm sự an toàn rằng phiên bản chính xác của Python đang được người đọc của bạn sử dụng, bạn có thể chỉ định số phiên bản chính và phụ trong lệnh, như sau:

$ python3.6 -m venv example-three-six

Nếu bạn đọc đang sử dụng phiên bản không phải 3.6 thì câu lệnh sẽ không thành công và sẽ báo trong thông báo lỗi của nó. Tuy nhiên, bất kỳ phiên bản vá lỗi nào (ví dụ 3.6.4) sẽ hoạt động.

Đọc thêm  Danh sách chỉ mục nằm ngoài phạm vi - Lỗi Python [Solved]

Khi môi trường đang hoạt động, bất kỳ gói nào cũng có thể được cài đặt vào nó thông qua pip như bình thường. Theo mặc định, môi trường mới được tạo sẽ không phải bao gồm bất kỳ gói nào đã được cài đặt trên máy. Như pip bản thân nó sẽ không nhất thiết phải được cài đặt trên máy. Nên nâng cấp lần đầu pip lên phiên bản mới nhất, sử dụng pip install --upgrade pip.

Các dự án thường sẽ có một requirements.txt tệp chỉ định các phụ thuộc của nó. Điều này cho phép lệnh tắt pip install -r requirements.txt lệnh để nhanh chóng cài đặt tất cả các gói vào môi trường ảo mới được tạo. Chúng sẽ chỉ tồn tại trong môi trường ảo. Nó sẽ không khả dụng khi bị hủy kích hoạt nhưng sẽ tồn tại khi được kích hoạt lại.

Nếu bạn không cần sử dụng các phiên bản bổ sung của Python, thì đây là tất cả những gì bạn cần để tạo các môi trường ảo, riêng biệt, dành riêng cho dự án.

pyenv

Nếu bạn muốn sử dụng nhiều phiên bản Python trên một máy, thì pyenv là một công cụ thường được sử dụng để cài đặt và chuyển đổi giữa các phiên bản. Điều này không bị nhầm lẫn với khấu hao đã đề cập trước đó pyvenv kịch bản. Nó không đi kèm với Python và phải được cài đặt riêng.

Các pyenv tài liệu bao gồm một mô tả tuyệt vời về cách thức hoạt động của nó, vì vậy ở đây chúng ta sẽ xem xét cách sử dụng nó một cách đơn giản.

Đầu tiên chúng ta sẽ cần cài đặt nó. Nếu sử dụng Mac OS X, chúng ta có thể thực hiện việc này bằng Homebrew, nếu không thì hãy xem xét các tùy chọn cài đặt khác.

$ brew update
$ brew install pyenv

Tiếp theo, thêm phần sau vào cuối tập lệnh shell của bạn để cho phép pyenv để tự động thay đổi phiên bản cho bạn:

eval "$(pyenv init -)"

Để thực hiện, hãy mở tập lệnh Shell đang sử dụng của bạn, thông qua $ ~/.zshrc, $ ~/.bashrc hoặc $ ~/.bash_profile và sao chép và dán dòng trên vào.

Đang chạy pyenv versions sẽ hiển thị phiên bản Python nào hiện đang được cài đặt, với một * bên cạnh cái hiện đang được sử dụng. pyenv version cho thấy điều này trực tiếp, và python --version có thể được sử dụng để xác minh điều này.

Để cài đặt một phiên bản bổ sung, nói 3.4.0chỉ cần sử dụng pyenv install 3.4.0.

pyenv xem xét bốn vị trí để quyết định sử dụng phiên bản Python nào, theo thứ tự ưu tiên:

  1. Các PYENV_VERSION biến môi trường (nếu được chỉ định). Bạn có thể dùng pyenv shell để đặt biến môi trường này trong phiên shell hiện tại của bạn.
  2. ứng dụng cụ thể .python-version tập tin trong thư mục hiện tại (nếu có). Bạn có thể sửa đổi thư mục hiện tại .python-version tập tin với pyenv local chỉ huy.
  3. đầu tiên .python-version tệp được tìm thấy (nếu có) bằng cách tìm kiếm từng thư mục mẹ, cho đến khi đến thư mục gốc của hệ thống tệp của bạn.
  4. Tệp phiên bản toàn cầu. Bạn có thể sửa đổi tập tin này bằng cách sử dụng pyenv global chỉ huy. Nếu không có tệp phiên bản toàn cầu, pyenv giả định rằng bạn muốn sử dụng Python “hệ thống”. (Nói cách khác, bất kỳ phiên bản nào sẽ chạy nếu pyenv không có trong PATH.)

Khi thiết lập một dự án mới sử dụng Python 3.6.4 thì pyenv local 3.6.4 sẽ được chạy trong thư mục gốc của nó. Điều này sẽ thiết lập cả phiên bản và tạo một .python-version tệp, để máy của những người đóng góp khác sẽ nhận tệp đó.

Đọc thêm  Giải thích câu lệnh nhập Python

Mô tả đầy đủ về pyenv lệnh là một để đánh dấu.

pyenv và venv

Khi làm việc với Python 3.3+, giờ đây chúng ta biết cả cách cài đặt và chuyển đổi giữa các phiên bản Python khác nhau cũng như cách tạo môi trường ảo mới.

Ví dụ: giả sử chúng tôi đang thiết lập một dự án sử dụng Python 3.4.

Trước tiên, chúng tôi có thể đặt phiên bản cục bộ của mình bằng cách sử dụng pyenv local 3.4.0.

Nếu sau đó chúng tôi chạy python3 -m venv example-project một môi trường ảo mới sẽ được thiết lập dưới example-projectsử dụng Python 3.4.0 được kích hoạt cục bộ của chúng tôi.

Chúng tôi kích hoạt bằng cách sử dụng source example-project/bin/activate và có thể bắt đầu làm việc.

Tiếp theo chúng ta có thể tùy ý tài liệu mà một cộng tác viên nên sử dụng python3.4 -m venv <name>. Điều này có nghĩa là ngay cả khi cộng tác viên không sử dụng pyenv thì python3.4 lệnh sẽ lỗi nếu phiên bản Python của chúng không giống phiên bản chính và phụ (3 và 4) như chúng tôi dự định.

Ngoài ra, chúng tôi có thể chọn chỉ định rằng 3.4.0 sẽ được sử dụng và hướng dẫn python3 -m venv <name>. Nếu chúng tôi tin rằng bất kỳphiên bản greter hơn 3,4 là chấp nhận được, sau đó chúng tôi cũng có thể chọn sử dụng python3 trên python3.4, vì nếu cộng tác viên đang sử dụng 3.6 thì họ cũng sẽ gặp lỗi. Đây là một quyết định cụ thể của dự án.

Đọc thêm  // Có nghĩa là gì trong Python? Toán tử trong Python

pyenv-virtualenv

pyenv có thể được sử dụng để cài đặt cả phiên bản Python 2 và 3. Tuy nhiên, như chúng ta đã thấy, venv được giới hạn ở các phiên bản Python lớn hơn 3.3.

pyenv-virtualenv là công cụ tạo môi trường ảo tích hợp với pyenvvà hoạt động cho tất cả các phiên bản Python. Vẫn nên sử dụng Python chính thức venv có thể ở đâu. Nhưng nếu, ví dụ, bạn đang tạo một môi trường ảo dựa trên 2.7.13sau đó khen ngợi pyenv.

Nó cũng hoạt động tốt với Anaconda và Miniconda conda môi trường nếu bạn đã sử dụng chúng. Một công cụ gọi là virtualenv cũng tồn tại. Nó không được đề cập ở đây, nhưng nó được liên kết ở cuối.

Sau khi cài đặt pyenv tiếp theo nó có thể được cài đặt bằng Homebrew (hoặc các lựa chọn thay thế) như sau:

$ brew install pyenv-virtualenv

tiếp theo trong của bạn .zshrc, .bashrchoặc .bash_profile (tùy thuộc vào trình bao bạn sử dụng) thêm phần sau vào phía dưới:

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Điều này cho phép pyenv để tự động kích hoạt và hủy kích hoạt môi trường khi di chuyển thư mục.

Để tạo một môi trường ảo mới, hãy sử dụng:

$ pyenv virtualenv <version> <name-to-give-it>

// for example

$ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

Các môi trường hiện có có thể được liệt kê với:

$ pyenv virtualenvs

Kích hoạt / hủy kích hoạt với:

$ pyenv activate <name>
$ pyenv deactivate

Tại thời điểm viết, khi sử dụng activate cảnh báo prompt changing will be removed from future release sẽ được hiển thị. Điều này được mong đợi và chỉ đề cập đến (env-name) được hiển thị trong trình bao của bạn, không phải việc sử dụng activate ra lệnh cho chính nó.

Yêu cầu cài đặt hoạt động như được mô tả trong venv. không giống như trong venv một rm -r lệnh là không cần thiết để loại bỏ một môi trường, một uninstall lệnh tồn tại.

suy nghĩ cuối cùng

Giữa ba công cụ này, chúng tôi có khả năng cộng tác trên bất kỳ dự án nào, bất kể phiên bản Python hay phụ thuộc được yêu cầu. Chúng tôi cũng biết cách lập tài liệu hướng dẫn thiết lập để người khác sử dụng cho bất kỳ dự án nào mà chúng tôi thực hiện.

Chúng ta cũng có thể thấy lý do đằng sau việc sử dụng bộ nào, vì không phải tất cả các nhà phát triển đều yêu cầu cả ba.

Hy vọng điều này hữu ích và là tài liệu tham khảo hữu ích khi kết hợp với tài liệu được liên kết bên dưới.

Cảm ơn vì đã đọc! ?

Những thứ khác tôi đã khám phá:

Tài nguyên



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status