2011-07-26 30 views
5

Khi tôi ở trong virtualenv và nó đang hoạt động, tên của môi trường xuất hiện trong dấu ngoặc đơn trước dấu nhắc dòng lệnh thông thường. Có vẻ như: (foo-env)User:~/Development/foo-env/foo$ trong đó foo-env là tên của môi trường. Tôi đã tự hỏi nếu có một cách để làm cho nó rằng dấu nhắc dòng lệnh hiển thị một cái gì đó như (F)User:~/Development/foo-env/foo$ như trái ngược với màn hình hiện tại với (foo-env). Nếu điều này là có thể làm thế nào tôi sẽ đi về việc này?Hiển thị virtualenv

Cảm ơn.

Trả lời

6

Vì vậy, tôi đã tìm ra cách thực hiện việc này. Trong tập lệnh kích hoạt, $PS1 được định nghĩa lại để thêm vào tên của env, trong trường hợp này là (foo-env). Để thêm vào nó với bất cứ điều gì bạn muốn, bạn phải đi vào tập lệnh activate mà bạn chạy để kích hoạt virtualenv ([yourenv]/bin/activate]). Ở đó bạn thay đổi dòng xác định $PS1 mới từ PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" thành bất kỳ thứ gì bạn muốn, tại đây PS1="(F)$PS1".

2

Cách khác, sử dụng pew (Trình bao bọc Python Env). Sau đó, PS1 của bạn sẽ không bị xáo trộn khi bạn sử dụng virtualenv và bạn có thể đặt PS1 trong số .bashrc (v.v.) như thường lệ, hiển thị $VIRTUAL_ENV nếu được đặt. Phần có liên quan của mine trông giống như sau:

# python virtual env, however it comes to be 
if [ -z ${VIRTUAL_ENV+x} ] 
then 
VENV_NOTICE="" 
else 
VENV_NOTICE=" (py: $(basename "$VIRTUAL_ENV"))" 
fi 

PS1='whatever $VENV_NOTICE else'