virtualenv
cho phép bạn tạo một bản cài đặt Python tùy chỉnh, ví dụ như trong thư mục con của dự án. Do đó, mỗi dự án của bạn có thể có riêng python
(hoặc thậm chí một số) theo virtualenv tương ứng. Hoàn toàn ổn khi một số / tất cả các virtualen thậm chí có cùng một phiên bản python
(ví dụ 2.7.16) mà không có xung đột - chúng sống riêng và không biết về nhau. Nếu bạn muốn sử dụng bất kỳ tệp nào trong số đó python
, bạn phải sử dụng activate
nó (bằng cách chạy một tập lệnh sẽ tạm thời sửa đổi của bạn PATH
để đảm bảo rằng bin/
thư mục của virtualenv xuất hiện trước). Từ thời điểm đó, việc gọi python
(hoặc pip
v.v.) sẽ gọi phiên bản của virtualenv cho đến khi bạn deactivate
(nó khôi phục lại PATH
).
pyenv
hoạt động ở quy mô rộng hơn virtualenv
- nó chứa một thanh ghi các cài đặt Python (và có thể được sử dụng để cài đặt các cài đặt mới) và cho phép bạn định cấu hình phiên bản Python nào sẽ chạy khi bạn sử dụng python
lệnh. Âm thanh tương tự nhưng sử dụng thực tế là một chút khác nhau. Nó hoạt động bằng cách thêm trước python
tập lệnh shim của nó vào PATH
(vĩnh viễn) và sau đó quyết định gọi "thực" python
nào. Bạn thậm chí có thể cấu hình pyenv để gọi vào một trong những pythons virtualenv của bạn (bằng cách sử dụng pyenv-virtualenv
plugin). Các phiên bản Python bạn cài đặt bằng cách sử dụng pyenv
đi vào $(pyenv root)/versions/
thư mục của nó (theo mặc định, gốc pyenv là ~ / .pyenv) vì vậy 'toàn cầu' hơn virtualenv. Thông thường, bạn không thể sao chép các phiên bản Python được cài đặt qua pyenv
, ít nhất làm như vậy không phải là ý chính.
Để tạo một virtualenv với một phiên bản Python cụ thể, bạn cần phải có phiên bản đó ở đâu đó trong hệ thống của bạn (dù là trên PATH
hay không) và về cơ bản sao chép nó vào virtualenv mới tạo của bạn. Tất nhiên, một cách để có được một phiên bản cụ thể là cài đặt nó qua pyenv
. Khi đã xong, các virtualenv riêng lẻ có thể tự do phân kỳ bằng cách cài đặt các mô-đun (hoặc phiên bản khác nhau) vào chúng.
Nói ngắn gọn:
virtualenv
cho phép bạn tạo các cài đặt python độc lập, cục bộ bằng cách nhân bản từ những cái hiện có
pyenv
cho phép bạn cài đặt các phiên bản khác nhau của python đồng thời (toàn hệ thống hoặc chỉ dành cho người dùng cục bộ) và sau đó chọn vô số trăn để chạy bất cứ lúc nào (bao gồm cả các phiên bản được tạo bởi virtualenv hoặc Anaconda)