У меня есть следующая структура папок;
myapp\
myapp\
__init__.py
tests\
test_ecprime.py
и мой pwd
C:\Users\wwerner\programming\myapp\
У меня есть следующая тестовая установка:
import pytest
import sys
import pprint
def test_cool():
pprint.pprint(sys.path)
assert False
Это создает следующие пути:
['C:\\Users\\wwerner\\programming\\myapp\\tests',
'C:\\Users\\wwerner\\programming\\envs\\myapp\\Scripts',
'C:\\Windows\\system32\\python34.zip',
'C:\\Python34\\DLLs',
'C:\\Python34\\lib',
'C:\\Python34',
'C:\\Users\\wwerner\\programming\\envs\\myapp',
'C:\\Users\\wwerner\\programming\\envs\\myapp\\lib\\site-packages']
И когда я пытаюсь import myapp
, я получаю следующую ошибку:
ImportError: No module named 'ecprime'
Так что похоже, что текущий каталог не добавляется к моему пути.
Изменив мою строку импорта, чтобы она выглядела так:
import sys
sys.path.insert(0, '.')
import myapp
Затем я могу импортировать myapp
без проблем.
Почему мой текущий каталог не отображается в пути при запуске pytest? Является ли мой единственный обходной путь для вставки .
в sys.path
? (Я использую Python 3.4, если это имеет значение)
myapp
перед импортомpytest
(чтобы убедиться, что проблема в pytest)? Попробуйтеimport myapp
в качестве самой первой строки в скрипте. - person Sunny Nanda   schedule 21.01.2014