Tôi muốn có một PYTHONPATH khác với thông thường của mình trong một virtualenv cụ thể. Làm cách nào để thiết lập tự động? Tôi nhận ra rằng có thể hack file bin/activate
, có cách nào tốt hơn/tiêu chuẩn hơn không?Tôi có thể tự động thay đổi PYTHONPATH của mình khi kích hoạt/hủy kích hoạt virtualenv không?
13
A
Trả lời
19
django-users post có thể sẽ giúp ích cho bạn rất nhiều. Nó gợi ý sử dụng virtualenvwrapper để bọc virtualenv, sử dụng lệnh add2virtualenv. Sử dụng điều này, khi môi trường hoạt động, bạn chỉ có thể gọi:
add2virtualenv directory1 directory2 ...
để thêm thư mục vào đường dẫn của bạn cho môi trường hiện tại.
Nó xử lý tự động các thay đổi PATH trên các công tắc môi trường. Không cần ma thuật đen. Et thì đấy!
2
Đây là phiên bản bị tấn công của bin/activate
để tham khảo. Nó đặt PYTHONPATH một cách chính xác, nhưng unsetting không hoạt động.
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate() {
if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r
fi
if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
PS1="$_OLD_VIRTUAL_PS1"
export PS1
unset _OLD_VIRTUAL_PS1
fi
if [ -n "$_OLD_PYTHONPATH" ] ; then
PYTHONPATH="$_OLD_PYTHONPATH"
export PYTHONPATH
unset _OLD_PYTHONPATH
fi
unset VIRTUAL_ENV
if [ ! "$1" = "nondestructive" ] ; then
# Self destruct!
unset deactivate
fi
}
# unset irrelavent variables
deactivate nondestructive
VIRTUAL_ENV="env_location" # Anonymized
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
_OLD_VIRTUAL_PS1="$PS1"
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
export PS1
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r
fi
_OLD_PYTHONPATH="$PYTHONPATH"
PYTHONPATH="new_pythonpath" #Anonymized
export PYTHONPATH
Các vấn đề liên quan
- 1. Tôi không muốn Android đổi kích thước bitmap của mình Tự động
- 2. Tự động hoàn tất có thể thay đổi kích thước
- 3. Cách tự động thay đổi kích thước lưới khi biểu mẫu được thay đổi kích thước?
- 4. Tự động thay đổi kích thước hàng TableLayoutPanel khi cửa sổ được thay đổi kích thước
- 5. Chỉnh sửa kích thước tự động của Gridpanel khi thay đổi kích thước cửa sổ
- 6. Tôi có thể kích hoạt sự kiện CSS trong safari di động khi thay đổi hướng của iPhone không?
- 7. pip: Không thể tìm thấy virtualenv kích hoạt (bắt buộc)
- 8. Kích hoạt một hành động khi document.cookie thay đổi?
- 9. Cột tự động thay đổi kích thước thành kích thước của QTableView
- 10. Tại sao tôi không thể kích hoạt sự kiện `thay đổi` của radio bằng jquery?
- 11. Có thể tự động thay đổi kích thước heap java tối đa không?
- 12. tự động thay đổi kích thước văn bản (cỡ chữ) khi thay đổi kích thước cửa sổ?
- 13. boost :: multi_array thay đổi kích thước không hoạt động
- 14. Không thể làm cho jQuery có thể thay đổi kích thước để hoạt động: Tôi đang làm gì sai?
- 15. $ đồng hồ không được kích hoạt khi thay đổi mảng
- 16. Thay đổi JQuery không kích hoạt cho đến khi mờ
- 17. Cột có thể thay đổi kích thước
- 18. Tự động thay đổi kích thước div dựa trên kích thước của cửa sổ trình duyệt
- 19. Biểu tượng JButton tự động thay đổi kích thước
- 20. Khung nội tuyến Fancybox tự động thay đổi kích thước
- 21. Trình duyệt di động không kích hoạt sự kiện thay đổi kích cỡ khi ẩn thanh địa chỉ
- 22. jQuery AutoComplete chọn kích hoạt sau khi thay đổi?
- 23. kích hoạt sự kiện khi thay đổi lớp học
- 24. TeamCity không kích hoạt tự động xây dựng
- 25. Thay đổi kích thước một phần tử kích hoạt sự kiện thay đổi kích thước của cửa sổ
- 26. Làm thế nào tôi có thể ngăn Emacs thay đổi kích thước cửa sổ của tôi?
- 27. cách tự động thay đổi kích cỡ bootstrap-wysihtml5
- 28. Nút IsEnabled Kích hoạt không hoạt động
- 29. Làm cách nào để tự động thay đổi kích thước div thành kích thước nội dung của nó khi nội dung của div đã thay đổi?
- 30. Thay đổi kích thước UINavigationBar khi xoay
Tôi đang cố gắng thực hiện việc này ngay bây giờ và có thể tôi sẽ chấp nhận nó sau một vài ngày nếu vẫn không có bất kỳ giải pháp nào khác không phụ thuộc vào các gói bổ sung. – saffsd
Cần lưu ý rằng bạn có thể tự động hóa điều này bằng cách chỉnh sửa tập lệnh 'postactivate' trong thư mục dự án virtualenvwrapper của bạn. Theo mặc định, nó được tìm thấy trong '~/.virtualenvs/myproject/bin/postactivate' trong đó" myproject "là tên của env ảo của bạn. –