Gần đây, tôi đã gặp phải một số vấn đề với việc chạy các phép đo vùng phủ sóng trong môi trường ảo. Tôi không nhớ các vấn đề tương tự trong quá khứ, cũng như tôi không thể tìm thấy giải pháp trên web.Chạy vùng phủ sóng bên trong virtualenv
Về cơ bản, khi tôi đang cố gắng chạy bộ thử nghiệm trong virtualenv, nó hoạt động tốt. Nhưng ngay sau đó, khi tôi cố gắng làm điều đó bằng cách sử dụng coverage
, nó không thành công vì thiếu các mô-đun nó đòi hỏi. Dựa trên một số câu trả lời trên StackOverflow tôi đã kiểm tra kịch bản của mình và phát hiện ra rằng coverage
sử dụng trình thông dịch khác nhau, ngay cả khi chạy từ bên trong cùng một virtualenv
.
Dưới đây là làm thế nào để tái tạo nó:
$ virtualenv --no-site-packages venv
New python executable in venv/bin/python
Installing Setuptools................................................done.
Installing Pip.......................................................done.
$ source venv/bin/activate
(venv)$ echo 'import sys; print(sys.executable)' > test.py
(venv)$ python test.py
/home/tadeck/testground/venv/bin/python
(venv)$ coverage run test.py
/usr/bin/python
Câu hỏi đặt ra là: làm thế nào để làm cho coverage
làm việc với môi trường ảo hoàn hảo? Tôi có thể thay đổi sys.path
hoặc cài đặt các mô-đun được yêu cầu trên toàn hệ thống, nhưng phải có cách thức rõ ràng hơn.
Tôi không thể tạo lại điều này trên cửa sổ, tôi sợ. Bảo hiểm hoạt động tốt. + 1 để giúp một pythonista đồng cần :) –
Bạn đã thử cài đặt gói '' coverage'' trong virtualenv mà bạn đang tạo chưa? – fjarri
@ Bogdan: Nó đã có ở đó, vì vậy tôi không cố gắng (lại) cài đặt nó. Nhưng khi tôi thực hiện 'pip install -U coverage', tôi nhận được" 'Yêu cầu đã được cập nhật: vùng phủ sóng trong./Venv/lib/python2.7/site-packages'". – Tadeck