2014-07-14 20 views
12

Tôi muốn thực hiện một số thao tác trong khi làm việc trên virtualenv được chỉ định.Cách sử dụng virtualenv trong makefile

Ví dụ lệnh

make install 

sẽ tương đương với

source path/to/virtualenv/bin/activate 
pip install -r requirements.txt 

Có thể?

Trả lời

12

Để bạn có thể chạy trình bao làm lệnh. Trong trình bao này, bạn có thể làm mọi thứ bạn có thể làm trong một trình bao mà bạn bắt đầu từ comandline. Ví dụ:

install: 
    (\ 
     source path/to/virtualenv/bin/activate; \ 
     pip install -r requirements.txt; \ 
    ) 

Chú ý phải được thanh toán cho ;\.

Mọi thứ giữa dấu ngoặc nhọn mở và đóng sẽ được thực hiện trong một phiên bản vỏ duy nhất.

+5

Không cần cho môi trường '()' trong trường hợp này. đã tạo ra một thể hiện shell mới cho mỗi dòng trong một thân thể quy tắc. Bạn chỉ cần sử dụng các dấu hiệu tiếp tục để làm cho đọc các dòng và thực hiện chúng trong một trình bao duy nhất thay vì trong nhiều shell như nó sẽ mặc định. –

0

Bạn cũng có thể sử dụng biến môi trường có tên "VIRTUALENVWRAPPER_SCRIPT". Như thế này:

install: 
    (\ 
     source $$VIRTUALENVWRAPPER_SCRIPT; \ 
     pip install -r requirements.txt; \ 
    ) 
6

Tôi đã có may mắn với điều này.

install: 
    source ./path/to/bin/activate; \ 
    pip install -r requirements.txt; \ 
0

Bạn nên sử dụng tính năng này, tính năng này hiện đang hoạt động cho tôi.

report.ipynb : merged.ipynb 
    (bash -c "source ${HOME}/anaconda3/bin/activate py27; which -a python; \ 
     jupyter nbconvert \ 
     --to notebook \ 
     --ExecutePreprocessor.kernel_name=python2 \ 
     --ExecutePreprocessor.timeout=3000 \ 
     --execute merged.ipynb \ 
     --output=$< $<") 
2

Tôi thích sử dụng cái gì mà chạy chỉ khi requirements.txt thay đổi:

venv: venv/bin/activate 

venv/bin/activate: requirements.txt 
    test -d venv || virtualenv venv 
    . venv/bin/activate; pip install -Ur requirements.txt 
    touch venv/bin/activate 

test: venv 
    . venv/bin/activate; nosetests project/test 

clean: 
    rm -rf venv 
    find -iname "*.pyc" -delete 
Các vấn đề liên quan