Đối với Python 3.3+ (với venv
mô-đun tích hợp mới)
Câu trả lời ngắn (bất kể phiên bản):
- Không có cách nào sạch sẽ, trực tiếp để di chuyển một môi trường ảo
- Chỉ cần tạo lại, thật dễ dàng !!
Câu trả lời dài:
Kể từ Python v3.3, virtualenv
đã trở thành một mô-đun tích hợp có tên venv
.
Các --relocatable
tùy chọn được đề cập trong câu trả lời khác đã không được đưa vào venv
, và hiện không có tốt, cách an toàn mà tôi biết của một trong hai đổi tên hoặc di dời một môi trường ảo Python.
Tuy nhiên, có một cách khá đơn giản để tạo lại một môi trường ảo với tất cả các gói được cài đặt hiện tại của nó. Xem câu trả lời này hoặc xem phần bên dưới để biết thông tin về cách tạo lại môi trường ảo. Trong quá trình này, bạn có thể tạo lại môi trường mới ở bất kỳ vị trí nào và với bất kỳ tên nào bạn muốn. Hoặc xem phần bên dưới để biết quy trình.
Trong câu trả lời đó, anh ấy đề cập đến một số gói bên thứ 3 khác có thể hỗ trợ đổi tên hoặc di chuyển trực tiếp. Nếu bạn quyết tâm theo đuổi một cách để di chuyển một môi trường ảo một cách nguyên vẹn, bạn có thể xem xét liệu những cách đó có venv
hiệu quả hay không.
Lưu ý: Trong câu trả lời đó, nó tập trung vào virtualenv
, hơn là venv
. Xem bên dưới để biết cách dịch.
venv
so với virtualenv
cú pháp lệnh cũ hơn
Lệnh sử dụng venv
là:
python -m venv
thay vì chỉ virtualenv
, cài đặt như một lệnh trong gói gốc. Trong đó "python" đề cập đến cách bạn chạy tệp thực thi python của mình, có thể là nhiều thứ, chẳng hạn như:
python
py
hoặc py -3.7
hoặc tương tự ( Trình khởi chạy Python dành cho Windows dành cho Python 3.3+ và chỉ Windows tại thời điểm này)
python3
(quy ước cho môi trường linux cài đặt kép python 2 và 3)
- Nếu bạn đang gặp sự cố, hãy sử dụng đường dẫn tuyệt đối đến tệp thực thi python mà bạn muốn chạy: ví dụ:
c:\program files\python37\python.exe
Nếu bạn không chắc phiên bản nào đang được chạy, bạn luôn có thể python --version
tìm hiểu.
Cách tạo lại môi trường ảo
Tạo / tạo lại môi trường ảo rất dễ dàng và sẽ trở thành bản chất thứ hai sau khi bạn làm việc với chúng một chút. Quá trình này phản ánh những gì bạn sẽ làm để phân phối tập lệnh của mình dưới dạng một gói (với các phần phụ thuộc của nó) trong nửa đầu và sau đó ai đó sẽ làm gì để cài đặt tập lệnh / gói của bạn để phát triển thêm.
Đầu tiên, nhận danh sách cập nhật về những gì có trong môi trường ảo. Khi nó hoạt động, hãy tải phiên bản Python mà nó sử dụng và lưu danh sách các phần phụ thuộc vào một tệp.
Sử dụng python --version
với môi trường ảo được kích hoạt để xem nó đang sử dụng phiên bản Python nào.
- Điều này là rõ ràng - bạn có thể muốn cập nhật phiên bản Python vì nhiều lý do - ít nhất là lên phiên bản vá mới nhất
- Ví dụ: nếu venv hiện tại đang sử dụng Python v3.7.4, nhưng hiện tại v3.7.6 đã hết - hãy sử dụng v3.7.6 để thay thế, chỉ bao gồm các bản sửa lỗi và bảo mật không vi phạm.
Sử dụng python -m pip freeze > requirements.txt
để tạo danh sách các gói phụ thuộc hiện tại và đưa chúng vào requirements.txt
tệp. Lệnh này chắc chắn hoạt động trong Linux hoặc Git Bash - không chắc chắn 100% về Powershell hoặc Command Line trong Windows.
Bây giờ tạo một môi trường ảo mới và sau đó thêm các phụ thuộc từ môi trường cũ.
Tạo địa điểm mới của bạn.
- Đảm bảo rằng bạn đang sử dụng đúng phiên bản python mà bạn muốn cài đặt cho venv.
- Nếu bạn muốn nó giống hệt phiên bản Python:
- Chạy python trực tiếp từ môi trường ảo hiện tại (với nó đã được kích hoạt) và chỉ cần sử dụng
python
làm lệnh
- Hoặc sử dụng một đường dẫn tuyệt đối với
python.exe
trong thư mục môi trường ảo
- Đối với mục nhập thư mục venv mới trong lệnh:
- Thêm một đường dẫn tuyệt đối hoặc tương đối đến vị trí thư mục cuối cùng mong muốn.
- Sử dụng
python -m venv my_new_venv
để tạo môi trường ảo mới trong my_new_venv
thư mục làm việc hiện tại trong thư mục mới .
- Tên của thư mục venv sẽ là tên của venv (những gì sẽ hiển thị trong lời nhắc khi nó được kích hoạt).
Cài đặt phần phụ thuộc của bạn từ requirements.txt
tệp.
python -m pip install -r requirements.txt
Bạn có thể cần cài đặt lại các gói cục bộ đang ở chế độ phát triển.
Lưu ý, nếu bạn cần xem vị trí cụ thể mà gói được cài đặt, hãy sử dụng:
python -m pip list -v
- Các
-v
hoặc "verbose" tùy chọn sẽ thêm một số thông tin thêm về mỗi gói được cài đặt, bao gồm cả con đường nó được cài đặt. Điều này rất hữu ích để chắc chắn rằng bạn đang giữ ảo, người dùng, và hệ thống các gói cài đặt thẳng.
Tại thời điểm này, bạn chỉ cần xóa thư mục venv cũ và tất cả nội dung. Tôi khuyên bạn nên sử dụng GUI cho điều đó - việc xóa tệp thường là vĩnh viễn khỏi dòng lệnh linux và một lỗi đánh máy nhỏ có thể là tin xấu.