Không thể sao chép Python venv sang PC khác

Sep 17 2020

Tôi muốn sao chép venv hiện có của mình sang một PC khác nhưng chỉ cần sao chép dán là không hoạt động. Khi tôi sao chép venv và dán vào máy thứ hai và chạy

danh sách pip

Nó chỉ liệt kê các pip và setup_tools là các phần phụ thuộc đã cài đặt. Tôi đã thử một cách khác để sao chép các gói. Tôi đã tạo một venv mới trong máy thứ hai và sao chép tất cả tệp của venv đầu tiên sang venv mới đó bằng cách bỏ qua các tệp hiện có có cùng tên trong venv mới. Bây giờ, khi tôi chạy

danh sách pip

Nó hiển thị tất cả các phụ thuộc, nhưng khi tôi cố gắng khởi chạy sổ ghi chép jupyter như

sổ ghi chép jupyter

Nó đưa ra lỗi sau.

Lỗi nghiêm trọng trong trình khởi chạy: Không thể tạo quy trình bằng '"f: \ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" sổ ghi chép ": Hệ thống không thể tìm thấy các tập tin được chỉ định.

Tôi không biết làm cho mọi thứ hoạt động. Hãy giúp tôi!

Biên tập

Vấn đề là tôi không có kết nối internet trên máy thứ hai. Trên thực tế, đó là một máy từ xa có áp dụng một số giao thức bảo mật và không có kết nối internet là một phần của bảo mật! Lỗi của tôi :'(

Trả lời

3 AKX Sep 17 2020 at 05:55

Bạn không thể sao chép và dán các venv từ máy này sang máy khác vì các tập lệnh trong đó có thể tham chiếu đến các vị trí hệ thống. (Tương tự là viết tắt của việc cố gắng di chuyển các venv trong một máy.)

Thay vào đó, hãy tạo lại môi trường trên máy mới:

  1. Trên máy cũ, chạy pip freeze -l > packages.txttrong virtualenv.
  2. Chuyển packages.txtsang máy mới.
  3. Tạo một virtualenv mới trên máy mới và nhập nó.
  4. Cài đặt các gói từ file txt: pip install -r packages.txt.

CHỈNH SỬA: Nếu bạn không có quyền truy cập Internet trên máy thứ hai, bạn có thể tiếp tục từ bước 2 với:

  1. Chạy pip wheel -w wheels -r packages.txttrong venv trên máy đầu tiên. Thao tác này sẽ tải xuống và xây dựng *.whlcác gói cho tất cả các gói bạn yêu cầu. Lưu ý rằng điều này giả định rằng cả hai máy đều giống nhau về hệ điều hành và kiến ​​trúc!
  2. Sao chép các tệp bánh xe sang máy mới.
  3. Tạo một virtualenv mới trên máy mới và nhập nó.
  4. Cài đặt các gói từ bánh xe trong virtualenv mới: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Bạn không bao giờ nên sao chép môi trường ảo giữa các máy. Cách đúng là xuất các phần phụ thuộc được cài đặt trong môi trường sử dụng pip freezevà tạo một môi trường ảo mới trên máy kia.

# One the first machine
pip freeze > requirements.txt
# Copy requirements.txt to the other machine, or store in a source repository
# Then install the requirements in the new virtual environment
pip install -r requirements.txt