Tôi đã kiểm tra kích hoạt kịch bản và có vẻ với tôi tất cả nó là:Virtualenv hoạt động như thế nào?
- bộ VIRTUAL_ENV env
- thêm $ VIRTUAL_ENV/bin trước PATH
như thế nào virtualenv
cung cấp môi trường ảo huyền ảo này? Tôi nhớ gì?
Tôi đã kiểm tra kích hoạt kịch bản và có vẻ với tôi tất cả nó là:Virtualenv hoạt động như thế nào?
như thế nào virtualenv
cung cấp môi trường ảo huyền ảo này? Tôi nhớ gì?
Tôi sẽ mô tả quy trình cơ bản, mà tôi đã học được từ bản trình bày mà jcollado liên kết đến.
Khi Python bắt đầu, nó nhìn vào đường dẫn nhị phân và tiền tố của nó. Giả sử virtualenv của bạn là /home/blah/scratch
. Sau đó, nhị phân python (mà chỉ là một bản sao của hệ nhị phân python của bạn) sẽ có trong /home/blah/scratch/bin/python
. Python tìm kiếm lib/pythonX.X/os.py
trong /home/blah/scratch/bin/
, sau đó /home/blah/scratch/
và dừng ở đó vì tồn tại /home/blah/scratch/lib/pythonX.X/os.py
. Nếu không, Python sẽ tiếp tục tìm kiếm /home/blah/lib/pythonX.X/os.py
, vv Sau đó đặt sys.prefix
dựa trên điều này. Nó sử dụng một quá trình tương tự để thiết lập sys.exec_prefix
, và sau đó sys.path
được xây dựng dựa trên những điều này.
'X.X' có nguồn gốc từ phiên bản Python, vì vậy nó sẽ là' 2.7' hoặc một cái gì đó tương tự. – Max
Không bao giờ nghĩ về con đường này phát hiện ra cho sys.prefix! – Drake
Cảm ơn bạn đã giải thích rõ ràng trong phần nội dung câu trả lời của bạn thay vì liên kết với một nguồn bên ngoài có thể thay đổi hoặc biến mất trong tương lai. –
Bài viết này phục vụ python và django cùng với linux. http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/
Đây là một nội dung rất tốt presentation về chủ đề này. Về cơ bản, nó giải thích các bước để viết của riêng bạn virtualenv
với các thủ thuật tương tự Ian Bicking được sử dụng để viết nó.
* "Rất tiếc, chương trình này đã bị xóa khỏi Blip." * → Đây có phải là ULR mới cho video không? http://pyvideo.org/video/389/pycon-2011--reverse-engineering-ian-bicking--39-s –
@ DenilsonSá: Tôi không phải là jcollado nhưng theo như tôi nhớ, vâng. – Max
@ DenilsonSá Xin lỗi vì sự chậm trễ. Vâng, đó là video. Tôi đã cập nhật liên kết trong phản hồi. Cảm ơn. – jcollado
virtualenv myenv
. Việc này tạo một thư mục có tên là myenv và sao chép hệ nhị phân python thành myenv/bin. Nó cũng thêm các tệp và thư mục cần thiết khác vào myenv, bao gồm tập lệnh thiết lập trong bin/kích hoạt và lib thư mục con cho các mô-đun và gói.. myenv/bin/activate
, đặt biến môi trường PATH
của vỏ để bắt đầu với myenv/bin.python
từ trình bao này, nó sẽ thực thi bản sao của tệp nhị phân được lưu trữ trong myenv/bin. Mặc dù nhị phân giống hệt nhị phân trong/usr/bin/python, nhị phân python chuẩn được thiết kế để tìm kiếm các gói và mô-đun trong các thư mục có liên quan đến đường dẫn của nhị phân (chức năng này không liên quan đến virtualenv). Nó trông trong ../lib/pythonX.Y trong đó X và Y là số phiên bản chính và nhỏ của nhị phân python. Vì vậy, bây giờ nó đang tìm kiếm trong myenv/lib/pythonX.Y.pip
để khi người dùng cài đặt các gói mới sử dụng pip từ virtualenv, họ sẽ được cài đặt trong myenv/lib/pythonX.YTôi tự hỏi các bạn biết đường dẫn bí mật ở đâu đó như '../ lib/pythonX.Y' và thậm chí cả những thứ khác liên quan đến' sys.prefix' và v.v. – Drake
Tôi chưa thấy bất kỳ tài liệu nào tốt về nó, nhưng tôi nhận thấy hành vi này khi xây dựng Python từ nguồn. Bạn cũng có thể kiểm tra nó như sau: 'mkdir/tmp/bin; mkdir/tmp/lib; cp/usr/bin/python/tmp/bin; cp -r /usr/lib/pythonX.Y/ /tmp/lib/pythonX.Y;/tmp/bin/python'. Sau đó gõ 'import sys; sys.prefix'. Điều này sẽ hiển thị "/ tmp". Nếu bạn loại bỏ thư mục/tmp/lib, nó sẽ trở lại "/ usr". – clark800
Don Đừng quên [virtualenv burrito] (https: // github.com/brainsik/virtualenv-burrito) –