Liệu nó có thể sao chép các mô-đun python từ một virtualenv sang một mô-đun khác. Nếu vậy thì làm thế nào được thực hiện?cách sao chép các mô-đun từ một virtualenv này sang một virtualenv khác
Trả lời
Thông thường bạn có thể sao chép thông tin .egg từ thư mục lib/site-package của virtualenv vào lib/site-packages của môi trường khác.
Chừng nào bạn đang di chuyển chúng từ một virtualenv khác trên cùng một máy , bạn có thể dễ dàng chỉ làm:
$ cp -r [env1]/lib/pythonX.X/site-packages/* [env2]/lib/pythonX.X/site-packages/
Tuy nhiên, nếu môi trường là trên các máy khác nhau hoặc sử dụng các phiên bản khác nhau của python hoặc một số khác biệt lớn khác, nó có lẽ không phải là một ý tưởng tốt. Nói chung nó an toàn hơn nhiều để tạo ra một requirements.txt
, và sau đó sử dụng để tải lên tất cả các mô-đun tương tự trong môi trường khác. Bạn có thể tạo tệp theo cách thủ công nếu muốn nhưng dễ dàng hơn khi chỉ sử dụng pip
.
$ pip freeze -E [env1] > requirements.txt
Hoặc, nếu virtualenv bạn được kích hoạt đã có, bạn chỉ có thể làm:
$ pip freeze > requirements.txt
Sau đó, trong môi trường khác, bạn có thể làm:
$ pip install -E [env2] -r /path/to/requirements.txt
tôi đang làm việc trên một máy 64bit với Ubuntu-14.04-64. Tôi biên soạn và cài đặt python-3.4.3 đến /opt/python3.4/ và tạo ra một vitualenv dựa trên python này.
mkvirtualenv -p /opt/python3.4/bin/python venv1
Ngoài ra để dễ:
sudo apt-get install virtualenvwrapper
Với venv cài đặt và làm việc với PyQt5 thành công (các bit cứng) cộng với NumPy, scipy, ipython, vv Tôi đã cài đặt virtualenv-clone:
workon myvenv
pip install virtual-clone
deactivate
và sau đó chạy:
virtualenv-clone venv1 venv2
PyQt5 hoạt động theo cách này. Các dòng lệnh nhắc nhở vẫn tên venv1 như hoạt động nhưng trong ~/.virtualenv/venv2
cat activate* | grep "venv1"
chương 3 mục trong ba tác phẩm kích hoạt, activate.csh, và kích hoạt. cá
Trong kích hoạt, thay đổi
if [ "x(myvenv1) " != x ] ; then
PS1="(myvenv1) $PS1"
else
to
...
PS1="(myvenv2) $PS1"
...
Kích hoạt .csh thay đổi
if ("venv1" != "") then
set env_name = "venv1"
else
để
...
set env_name = "venv2"
...
Trong activate.fish thay đổi
if test -n "(venv1) "
printf "%s%s%s" "(venv1) " (set_color normal) (_old_fish_prompt)
return
end
để
...
printf "%s%s%s" "(venv2) " (set_color normal) (_old_fish_prompt)
...
Bây giờ khi bạn 012.hoặc workon venv2
dấu nhắc lệnh sẽ hiển thị chính xác môi trường của bạn (bản sao nhân bản của venv1).
Chỉnh sửa: điều này không trả lời câu hỏi "Cách sao chép mô-đun từ virtualenv này sang một virtualenv khác" nhưng tôi chắc chắn kết quả là trong nhiều trường hợp mong muốn, cụ thể là tạo một venvới mới trên một thiết bị đã tạo trước đó bao gồm (tất cả) các mô-đun đã được cài đặt trước đó.
có vẻ như chúng tôi không thể chỉ sao chép một virtualenv làm một tệp khác. ngay cả khi bạn chnage $ VIRTUAL_ENV trong tệp kích hoạt, nó vẫn hoạt động như trong virtualenv gốc và pip sẽ cài đặt tất cả các gói tới origin-packages/
- 1. Cách di chuyển từ virtualenv sang buildout?
- 2. Sao chép các cột cụ thể từ một DataTable này sang một DataTable khác
- 3. Chạy OpenCV từ một virtualenv Python
- 4. Sao chép các giá trị từ cột này sang cột khác trong cùng một bảng
- 5. sql: cách sao chép từ một bảng này sang bảng khác
- 6. Giá trị TFS "Sao chép" từ một trường này sang một trường khác
- 7. cách sao chép từ một đối tượng chuỗi này sang đối tượng khác trong C++?
- 8. C# Sao chép Đếm từ một đối tượng này sang một đối tượng khác
- 9. VBA để sao chép tệp từ một thư mục này sang một thư mục khác
- 10. Sao chép tệp từ một dự án này sang một dự án khác trong maven
- 11. Sao chép từ tệp xml này sang tệp khác - powershell
- 12. Sao chép dữ liệu từ cột này sang cột khác (nằm trong một bảng khác)
- 13. Làm cách nào để sao chép các tệp của tôi từ một thư mục này sang một thư mục khác?
- 14. Sao chép các hàng từ bảng này sang bảng khác, bỏ qua các bản sao
- 15. Hoạt động bit C/sao chép một bit từ byte này sang byte khác
- 16. Duplicate virtualenv
- 17. Sao chép các giá trị từ một giá trị băm này sang một số khác trong perl
- 18. Cách sao chép các chỉ mục từ bảng này sang bảng khác trong SQL Server
- 19. Sao chép một mảng chuỗi sang một chuỗi khác
- 20. Sao chép nội dung của một thư mục này sang một thư mục khác
- 21. Sao chép các tệp iPhone CoreData từ một dự án sang một dự án khác
- 22. Sao chép từ một tệp văn bản này sang một tệp văn bản khác bằng cách sử dụng Python
- 23. Virtualenv có thể kế thừa từ chương trình khác không?
- 24. Làm cách nào để sao chép các tạo tác từ Teamcity sang một máy chủ khác?
- 25. Sao chép một cấu trúc sang một cấu trúc khác
- 26. Sao chép các tệp từ dự án này sang dự án khác sau khi xây dựng
- 27. cách tạo virtualenv với pypy?
- 28. Cron và virtualenv
- 29. sao chép các mục danh sách từ danh sách này sang danh sách khác trong sharepoint
- 30. Làm cách nào để sao chép tệp từ máy chủ này sang máy chủ khác?
sẽ có bất cứ điều gì sai nếu tôi cố gắng sao chép * one * package like điều này? – Claudiu
Sự cố không nằm trong số lượng * của gói được sao chép, nhưng bất kỳ sự khác biệt nào trong phiên bản Python, kiến trúc hệ thống, v.v., giữa nguồn và đích. Nếu nguồn và đích nằm trên cùng một máy, bạn sẽ ổn; nếu chúng ở trên các máy khác nhau, bạn nên sử dụng 'pip freeze'. –