2015-03-20 12 views
12

नहीं मिल रहा है यह सवाल निम्नलिखित प्रश्न से संबंधित है, लेकिन वहाँ का उत्तर नहीं मिला:py.test मॉड्यूल

मैं के साथ एक अजगर मॉड्यूल है निम्नलिखित पेड़ संरचना:

mcts 
|- setup.py 
|- mcts 
|- __init__.py 
|- uct.py 
|- toy_world_state.py 
|- test 
    |- test_uct.py 
    |- test_toy_world_state.py 

मैं वर्चुअलनव कुछ निर्देशिका में

$ mkdir virtual 
$ virtualenv --system-site-packages virtual 
$ source virtual/bin/activate 

मैं तो मेरे पैकेज स्थापित: अगर मैं किसी भी रास्ते पर जाना

$ py.test mcts 
================================================== test session starts ================================================== 
platform linux -- Python 3.4.2 -- py-1.4.26 -- pytest-2.6.4 
collected 0 items/2 errors 

======================================================== ERRORS ========================================================= 
__________________________________ ERROR collecting mcts/test/test_toy_world_state.py ___________________________________ 
mcts/test/test_toy_world_state.py:4: in <module> 
    from mcts.toy_world_state import * 
E ImportError: No module named 'mcts' 
________________________________________ ERROR collecting mcts/test/test_uct.py _________________________________________ 
mcts/test/test_uct.py:4: in <module> 
    from mcts.uct import * 
E ImportError: No module named 'mcts' 
================================================ 2 error in 0.02 seconds =============================================== 

और मॉड्यूल आयात करने का प्रयास:

$ cd /path/to/mcts 
$ pip install -e . 

अब मैं परीक्षण चलाने का प्रयास ipython में यह काम करता है:

$ cd 
$ ipython 

In [1]: import mcts.uct 

In [2]: mcts.uct? 
Type:  module 
String form: <module 'mcts.uct' from '/home/johannes/src/mcts/mcts/uct.py'> 
File:  /home/johannes/src/mcts/mcts/uct.py 
Docstring: <no docstring> 

यदि मैं pycharm के भीतर से pytest चलाता है यह काम करता है। (लेकिन मैं नहीं पता है क्या जादू pycharm में क्या होता है ...)

echo $PYTHONPATH कोई रिक्त स्ट्रिंग रिटर्न, वहीं sys.path सही प्रतीत हो रहा है:

>>> import sys; print(sys.path) 
['/home/johannes/src/mcts/virtualenvs/teste/lib/python3.4/site-packages', 
'/home/johannes/src/mcts', '', '/usr/bin', 
'/usr/lib/python3.4/site-packages/GitPython-0.3.2.RC1-py3.4.egg', 
'/usr/lib/python34.zip', '/usr/lib/python3.4', 
'/usr/lib/python3.4/plat-linux', '/usr/lib/python3.4/lib-dynload', 
'/usr/lib/python3.4/site-packages', 
'/usr/lib/python3.4/site-packages/IPython/extensions', 
'/home/johannes/.ipython'] 

मुझे क्या करना है, प्राप्त करने के लिए pytests चल रहा है?

+0

मैं आपकी फ़ाइल संरचना में मॉड्यूल 'toy_world_state' नहीं देख सकता जो बता सकता है कि 'mcts.toy_world_state import * से एक त्रुटि क्यों फेंकता है। – Scironic

+0

क्षमा करें, यह मेरे प्रश्न में एक टाइपो था। मैं इसे बदलता हूँ। – hildensia

+0

मुझे आश्चर्य है कि क्या आप अपने '$ PYTHONPATH' में प्रोजेक्ट जोड़ते हैं, यह काम कर सकता है और यह हो सकता है कि PyCharm को करने के लिए कॉन्फ़िगर किया गया हो। – adarsh

उत्तर

13

मैंने इसे स्वयं तय किया। किसी कारण से pytest वर्चुअलenv सही नहीं मिला था। वर्चुअलनेव में पाइस्टेस्ट को स्थापित करने से इसे

source virtualenvs/teste/bin/activate 
pip install pytest 
4

मैंने इसे आपके प्रश्न और मेरे स्वयं के भ्रम के उत्तर के रूप में बनाया है। मुझे उम्मीद है यह मदद करेगा। दोनों py.test कमांड लाइन और tox.ini में PYTHONPATH पर ध्यान दें।

https://github.com/jeffmacdonald/pytest_test

विशेष रूप से: आप जहां भी शामिल कर रहे मॉड्यूल को खोजने के लिए py.test और tox बताने के लिए की है।

PYTHONPATH=. py.test 

और tox के साथ, अपने tox.ini से जोड़ें::

[testenv] 
deps= -r{toxinidir}/requirements.txt 
commands=py.test 
setenv = 
    PYTHONPATH = {toxinidir} 
+0

टच। अब यह अपडेट किया गया है। –

+0

कृपया अपनी परियोजना के बारे में अधिक पोस्ट बनाने से पहले साथी स्टैक ओवरफ़्लो समुदाय मॉडरेटर द्वारा इस पोस्ट को पढ़ें: [व्यक्तिगत ओपन-सोर्स लाइब्रेरीज़ कैसे प्रदान करें?] (Https://meta.stackexchange.com/q/229085) –

-3

आपका त्रुटि संदेश का कहना है:

आप ऐसा कर सकते py.test साथ

ImportError: No module named 'mcts'

आपके द्वारा प्रदत्त निर्देशिका संरचना को देखते हुए, यह त्रुटि आपको बता रही है कि आपके पास 'mcts' मॉड्यूल/पैकेज नहीं है। इसे ठीक करने के लिए, आपको 'mcts' निर्देशिका में "__init__.py" फ़ाइल जोड़ने की आवश्यकता है। इसके बाद, आपको अन्य तर्क/सेटिंग्स के बिना 'py.test' चलाने में सक्षम होना चाहिए।

संबंधित मुद्दे