2009-05-14 37 views
43

Tôi không thể sử dụng mũi (nosetests) trong dự án virtualenv - dường như không tìm thấy gói được cài đặt trong môi trường virtualenv.Các vấn đề khi sử dụng mũi trong virtualenv

Điều kỳ lạ là tôi có thể thiết lập

test_suite = 'nose.collector' 

trong setup.py và chạy thử nghiệm tốt như

python setup.py test 

nhưng khi chạy nosetests thẳng, có tất cả các loại lỗi nhập .

Tôi đã thử với cả cài đặt toàn bộ mũi và gói mũi ảo hóa và không may mắn.

Mọi suy nghĩ?

Cảm ơn !!

+0

Trên một lưu ý liên quan, mũi hoạt động tốt "ngoài hộp" trên một máy tính khác ... gặp sự cố. – Ryan

Trả lời

42

Bạn có thể chạy myenv/bin/python /usr/bin/nosetests không? Điều đó sẽ chạy Mũi bằng cách sử dụng bộ thư viện môi trường ảo.

+0

Có thực sự. Điều đó không hiệu quả. Cảm ơn bạn! – Ryan

+3

Nếu sử dụng với các tập lệnh mà các nhà phát triển khác sẽ sử dụng, bạn có thể làm 'python \' mà nosetests \ '' – bcoughlan

+2

Hãy thử này bí danh nosetests = '/ usr/bin/env python $ (mà nosetests)' – Necrolyte2

8

Đây là những gì làm việc cho tôi:

$ virtualenv --no-site-packages env1 
$ cd env1 
$ source bin/activate   # makes "env1" environment active, 
           # you will notice that the command prompt 
           # now has the environment name in it. 

(env1)$ easy_install nose  # install nose package into "env1" 

Tôi tạo ra một gói phần mềm thực sự cơ bản slither rằng đã có, trong setup.py của nó, cùng test_suite thuộc tính như bạn đề cập ở trên. Sau đó, tôi đã đặt nguồn gói theo số env1/src.

Nếu bạn nhìn vào bên trong env1/src, bạn sẽ thấy:

slither/setup.py 
slither/slither/__init__.py 
slither/slither/impl.py   # has some very silly code to be tested 
slither/slither/tests.py   # has test-cases 

tôi có thể chạy các bài kiểm tra sử dụng test subcommand:

(env1)$ pushd src/slither 
(env1)$ python setup.py test 
# ... output elided ... 
test_ctor (slither.tests.SnakeTests) ... ok 
test_division_by_zero (slither.tests.SnakeTests) ... ok 
Ran 2 tests in 0.009s 
OK 
(env1)$ popd 

Hoặc, tôi có thể chạy các bài kiểm tra tương tự với nosetests:

(env1)$ pushd src 
(env1)$ nosetests slither/ 
.. 
Ran 2 tests in 0.007s 
OK 
(env1)$ popd 

Cũng lưu ý rằng nosetests c là một cầu kỳ về thực thi. Bạn có thể vượt qua --exe nếu bạn muốn nó khám phá các thử nghiệm trong các mô-đun python có thể thực thi được.

9

Tôi gặp vấn đề tương tự. Cách giải quyết sau đây giúp:

python `which nosetests` 

(thay vì chỉ nosestests)

+0

Điều đó làm việc cho tôi. Cảm ơn. – ashic

58

Bạn cần có một bản sao của mũi được cài đặt trong môi trường ảo. Để buộc lắp đặt mũi vào virtualenv, mặc dù nó đã được cài đặt trong các trang web-gói toàn cầu, chạy pip install với -I cờ:

(env1)$ pip install nose -I 

Từ đó trở đi bạn chỉ có thể chạy nosetests như bình thường.

+12

Có vẻ như người dùng có thể phải làm mới virtualenv. Cụ thể, 'mà nosetests' nên trỏ đến một thực thi bên trong virtualenv. –

+17

+1 Đây là những gì làm việc cho tôi. Ngoài ra, như Ceasar chỉ ra, tôi cũng phải làm mới virtualenv bằng cách chạy 'hủy kích hoạt' và sau đó kích hoạt lại. – Tom

+2

đây phải là câu trả lời được chấp nhận !!! – ducin

0

Có lẽ đây là một thay đổi gần đây, nhưng đối với tôi, khi tôi cài đặt nosetests thông qua pip, có một thực thi nosetests cài đặt trong .virtualenvs/<env>/bin, mà (không ngạc nhiên) hoạt động chính xác với virtualenv.

0

Bạn có thể có một nosetests được cài đặt ở nơi khác trong số PATH của bạn với mức ưu tiên cao hơn so với cài đặt trong virtualenv của bạn. Một cách nhanh chóng để cung cấp cho các mô-đun nose và liên nosetests kịch bản cài đặt trong ưu tiên virtualenv đầu hiện tại của bạn là để chỉnh sửa của bạn PATH:

export PATH=/path/to/current/virtualenv/bin:$PATH 
7

Trong tình cảnh tương tự tôi cần phải tải lại virtualenv cho đường dẫn phải được cập nhật một cách chính xác:

deactivate 
env/bin/activate 
+0

Đây là cái đã làm cho tôi. Bất kỳ ý tưởng tại sao bạn cần phải kích hoạt lại sau khi cài đặt mũi (hoặc mũi 2, trong trường hợp của tôi)? – hansmosh

+0

@hansmosh, không thể kiểm tra ngay bây giờ, sẽ hữu ích khi kiểm tra tất cả các đường dẫn –

1

Nếu vẫn thất bại, hãy thử cài đặt mũi ở venvà/hoặc chạy nosetests-2.7. Tôi tin rằng câu trả lời của @ andrea-zonca có cùng tác dụng nếu python venv của bạn là 2.7

Các vấn đề liên quan