2013-07-24 32 views
15

Tôi rất mới với django. Tôi chỉ có một câu hỏi rất cơ bản về bố cục dự án bằng cách sử dụng virtualenv. Khi chúng ta tạo virtualenv và cài đặt tất cả các phụ thuộc-django, tôi có cần chuyển thư mục của mình sang virtualenv và sau đó tạo một dự án ở đó không? Hay tôi cần tạo dự án của mình ngoài virtualenv. Tôi xin lỗi nếu đó là một câu hỏi rất cơ bản.Bố cục ảo của Django

Trả lời

1

Điều này đi đến chính trái tim của cách bạn sử dụng virtualenv: cd vào thư mục virtualenv, sau đó kích hoạt nó (hoặc cách khác xung quanh - nó không thực sự quan trọng). Cách thông thường để làm điều này trên linux (hoặc cygwin) là nguồn ./bin/activate/ từ bên trong virtualenv.

Tại thời điểm đó, nếu bạn sử dụng pip hoặc python, chúng sẽ là địa phương đối với virtualenv đó. Bạn chỉ nên thực hiện các cài đặt của mình và chạy công cụ sau khi kích hoạt virtualenv.

Vì vậy, để trả lời câu hỏi của bạn: hãy chuyển và kích hoạt trước bạn bắt đầu cài đặt hoặc làm bất cứ điều gì. Làm mọi thứ bên trong virtualenv, với nó được kích hoạt.

+0

Tôi đánh giá cao trả lời của bạn. Tuy nhiên, tôi đã nhìn thấy một video youtube, nơi họ lần đầu tiên kích hoạt nó và sau đó thay đổi thư mục. Có cách nào ưu tiên cho việc này không? –

+0

@hansaraj nó không quan trọng cho dù bạn chuyển vào thư mục đầu tiên. Bạn phải kích hoạt trước khi bạn làm bất cứ điều gì, và nó thường là thuận tiện hơn để được bên trong thư mục để làm những việc trong đó. Nếu bạn không muốn cd vào nó, đó là tốt, nhưng nó sẽ làm cho mọi thứ kém thuận tiện hơn. – Marcin

22

Không, thư mục nơi bạn tạo môi trường ảo hoàn toàn riêng biệt và không phải là nơi bạn sẽ đến và tạo dự án django của mình.

Thực tế, bạn thường đặt tất cả các môi trường ảo của mình vào một thư mục riêng biệt; cho tôi, tôi đặt chúng trong $HOME/work/.envs (chú ý ., điều này làm cho các thư mục ẩn theo mặc định), như vậy thì công việc của tôi trở thành:

$ virtualenv $HOME/work/.envs/new_env 
$ source $HOME/work/.envs/new_env/bin/activate 
(new_env)$ pip install django 
(new_env)$ cd ~/projects 
(new_env)/projects$ django-admin.py startproject atestproj 

Vì vậy, bạn thấy đấy, bạn không thực sự làm bất cứ điều gì với thư mục môi trường ảo ; nó được quản lý hoàn toàn bởi virtualenvpip.

virtualenvwrapper project giúp việc này dễ dàng hơn bằng cách quản lý môi trường ảo của bạn ở vị trí trung tâm.

+0

Cảm ơn bạn đã trả lời. Tôi có một câu hỏi. Giả sử tôi đã cài đặt django 1.4 trong thư mục gốc của máy tính của tôi. Sau đó, tôi cài đặt django 1.5 trong virtualenv. Sau đó, tôi tạo dự án django bên ngoài virtualenv- nói trên máy tính để bàn. Phiên bản django nào mà dự án của tôi sẽ sử dụng? 1,4 hoặc 1,5? –

+0

Nếu bạn không kích hoạt môi trường ảo, nó sẽ sử dụng 1.4, nếu bạn kích hoạt môi trường ảo, thì không quan trọng bạn đang ở đâu trong hệ thống tập tin, nó sẽ sử dụng 1,5 –

+0

Bạn có thể chỉ định phiên bản nào sử dụng rõ ràng (ví dụ: 'pip install django == 1.4') thực hành, như sau này bạn có thể 'pip freeze' và tạo một requirements.txt, mà sau đó bạn có thể' pip install' trên các máy khác, bảo toàn các phiên bản phụ thuộc dự án của bạn có thể có. – pygeek

2

Cấu trúc thư mục để sử dụng với virtualenv nên thực hiện như sau:

|-- project_name 
    |-- django 
     |-- project_name 

|-- virtualenv 
    |-- project_name 
     |-- bin 

Điều này tất nhiên không phải là câu trả lời dứt khoát về cách cấu trúc thư mục dự án của bạn nên được đặt ra-nó đã Tuy nhiên làm việc cho tôi, và những người khác Tôi biết, qua nhiều năm.

tôi khuyên bạn nên cấu trúc thư mục dự án django "twoscoops" và hướng dẫn cho người mới bắt đầu: https://github.com/twoscoops/django-twoscoops-project

tôi cũng khuyên bạn nên virtualenvwrapper, để làm cho việc quản lý môi trường ảo dễ dàng hơn: http://virtualenvwrapper.readthedocs.org/en/latest/

+0

yup, tính năng này hoạt động. – Legolas