2013-02-04 31 views
19

Tôi mới dùng virtualenv nhưng tôi đang viết ứng dụng django và cuối cùng tôi sẽ phải triển khai nó bằng cách nào đó.Làm cách nào để xuất virtualenv?

Vì vậy, giả sử tôi có ứng dụng hoạt động trên virtualenv cục bộ của mình, nơi tôi đã cài đặt tất cả các thư viện được yêu cầu. Những gì tôi muốn làm bây giờ, là chạy một số loại kịch bản, sẽ lấy virtualenv của tôi, kiểm tra những gì được cài đặt bên trong và tạo ra một kịch bản sẽ cài đặt tất cả các thư viện trên virtualenv tươi trên máy khác. Làm thế nào điều này có thể được thực hiện? Hãy giúp tôi.

Trả lời

48

Bạn không sao chép dán virtualenv của mình. Bạn xuất danh sách tất cả các gói cài đặt như -

pip freeze > requirements.txt 

Sau đó đẩy các tập tin requirements.txt đến bất cứ nơi nào bạn muốn triển khai mã, và sau đó chỉ cần làm những gì bạn đã làm trên máy dev -

$ virtualenv <env_name> 
$ source <env_name>/bin/activate 
(<env_name>)$ pip install -r path/to/requirements.txt 

Và ở đó bạn có tất cả các gói của bạn được cài đặt với phiên bản chính xác.

Bạn cũng có thể nhìn vào Fabric để tự động hóa nhiệm vụ này, với một chức năng như thế này -

def pip_install(): 
    with cd(env.path): 
     with prefix('source venv/bin/activate'): 
      run('pip install -r requirements.txt') 
+0

Đủ công bằng, nhưng đó là một sự xấu hổ không có chỉ huy và tích hợp vải chuyên dụng;) – mnowotka

+1

Tôi vừa thêm vải vào câu trả lời. Bạn có thể dễ dàng viết một hàm vải để làm như vậy. Rất ít dòng mã. –

+0

Đã thêm chức năng mẫu để giúp bạn bắt đầu. –

0

Nếu nó sẽ là trên con đường mà bạn có thể tar nó và giải nén nó vào máy khác. Nếu tất cả các phụ thuộc giống nhau, các thư viện, vv có sẵn trên máy đích thì nó sẽ hoạt động.

0

Bạn có thể cài đặt virtualenvwrapper và thử cpvirtualenv, nhưng các nhà phát triển tư vấn cẩn thận ở đây:

Cảnh báo

Sao chép các môi trường ảo không được hỗ trợ tốt. Mỗi virtualenv có thông tin đường dẫn được mã hóa cứng vào đó và có thể có trường hợp mã sao chép không biết cần phải cập nhật một tệp cụ thể. Sử dụng cẩn thận .

Tôi chưa thử nghiệm điều này đủ, nhưng tôi sẽ cập nhật tại đây sau khi tôi biết mức độ hoạt động tốt (hoặc kém).

Các vấn đề liên quan