2011-09-29 5 views
10

Tôi muốn biến môi trường DJANGO_SETTINGS_MODULE thay đổi tùy thuộc vào những gì tôi nói cho công việc. Dường như với tôi rằng tôi muốn đặt nó trong .virtualenvs/postmkvirtualenv nhưng bản dùng thử của tôi không có hiệu lực.Đặt DJANGO_SETTINGS_MODULE trong virtualenv?

[email protected]:~$ cat ~/.virtualenvs/postmkvirtualenv 
#!/bin/bash 
# This hook is run after a new virtualenv is activated. 
export DJANGO_SETTINGS_MODULE=newproject.settings 
[email protected]:~$ echo $DJANGO_SETTINGS_MODULE 
az.settings 
[email protected]:~$ workon newproject 
(newproject)[email protected]:~$ echo $DJANGO_SETTINGS_MODULE 
az.settings 

Ai đó có thể đặt tôi thẳng; nơi tôi nên đặt xuất khẩu đó?

Ngoài ra, nó sẽ khôi phục khi tôi hủy kích hoạt? Và nếu không, có cách nào tự nhiên để khôi phục lại nó?

+0

Bạn có thể làm điều này: http://stackoverflow.com/questions/8826534/how-can-i-correctly-set-django-settings-module-for-my-django-project-i-am-using/ 22452281 # 22452281 – zzart

Trả lời

13

Bạn đã đi đúng hướng, nhưng bạn muốn sử dụng móc postactivate thay của postmkvirtualenv.

Nó sẽ không tự động khôi phục khi hủy kích hoạt. Rất may là có postdeactivate móc mà bạn có thể sử dụng để tự khôi phục bất kỳ biến môi trường nào mà bạn đã thay đổi khi kích hoạt.

+0

Cảm ơn bạn (cho cả hai người trả lời). Chìa khóa là "kích hoạt", và tôi không hiểu điều đó trước đây. –

+0

Không phải là hook postactivate phổ biến cho tất cả các môi trường? Tôi nghĩ rằng không có nhiều điểm thiết lập 'DJANGO_SETTINGS_MODULE' ở đó. –

+4

Có cả phiên bản toàn cục và cục bộ của móc hậu hoạt động. Đối với cài đặt chỉ dành cho địa phương như thế này, bạn muốn thêm 'xuất' vào' $ VIRTUAL_ENV/bin/postactivate' thay vì '$ VIRTUALENVWRAPPER_HOOK_DIR/postactivate' toàn cầu. – mmcnickle

19

Một cách tôi đã làm điều đó trước khi là bằng cách thêm một tuyên bố xuất khẩu đến hết ./bin/activate

export DJANGO_SETTINGS_MODULE="myproject.settings"