2015-07-06 1 views
1

Я недавно начал работу над проектом и был поручен внедрением некоторых новых функций, а также модульным тестированием для этих функций. Я пытался импортировать модули в файл модульного тестирования, но когда я запускаю его я сталкиваюсь с ImportError: модуль не назвал Developing.algorithms, когда я пытаюсь импортировать в test_algorithms.pyИмпорт из параллельных каталогов с помощью python 2.7

Я попытался импортировать как с

from Developing import algorithms as algo 

и

import Developing.algorithms as algo 

Моя структура похожа на структуру этого тестирования проекта, который я сделал:

Testing/ 
    __init__.py 
    Developing/ 
     __init__.py 
     algorithms.py 
    Master (Stable)/ 
    Tests/ 
     __init__.py 
     test_algorithms.py 

И я бегу в:

ImportError: No module named Developing.algorithms 

Или когда я изменить импорт в: от разработки алгоритмов импорта

ImportError: No module named Developing 

Я прочитал много подобных вопросов, и из тех, которые я узнал включить инициализации .py в каждую директорию, в которой есть файл, который я хочу импортировать. В настоящее время у меня нет ошибок в соответствии с PyCharm, но когда я запускаю его с терминала, я сталкиваюсь с этой ошибкой импорта. Я также не хочу изменять путь system/python, поскольку я читаю, что все, кто использует проект, должны будут так же. Итак, как я могу импортировать из параллельных каталогов без изменения путей?

+2

Куда вы импортируете это? Где в вашей структуре каталогов лежал бы тот скрипт, в котором вы импортируете 'Developing.algorithms'? –

+0

Я пытаюсь импортировать в test_algorithms.py – user3591079

+0

Как выглядят ваши заявления 'import'? Что-то вроде 'import Developing.algorithms' или' import Testing.Developing.algorithms'? Иногда вам нужно написать все имя пути. –

ответ

2

Вам нужно будет добавить каталог Testing в переменную PYTHONPATH окр, чтобы иметь возможность импортировать Developing.algorithms непосредственно (или каталог выше Testing, чтобы иметь возможность импортировать Testing.Developing.algorithms).

В окнах, вы можете установить переменную PYTHONPATH, как -

set PYTHONPATH=\path\to\Testing\;%PYTHONPATH% 

В Bash, вы можете попробовать -

export PYTHONPATH=/path/to/testing/:$PYTHONPATH 

Programatically (из питона), вы можете сделать следующее, прежде чем пытаться импортировать Developing.algorithms -

import sys 
sys.path.append('/path/to/Testing/') 
from Developing import algorithms # or how ever you want to import. 

Кроме того, вам не нужно делать все АВО ve, любой из них - либо установка переменной PYTHONPATH env, либо использование sys.path.

+0

Это, похоже, работает; Разве путь не будет отличаться для каждого компьютера?Я буду изучать использование os для этого. – user3591079

+0

Правильное решение для установки пути - всегда использовать virtualenv. –

+0

@ user3591079 Вы бы тестировали это на нескольких компьютерах? Если это так, я думаю, вам следует рассмотреть возможность реструктуризации вашей структуры каталогов, чтобы можно было импортировать файлы, не задавая ничего в 'PYTHONPATH'. Или вы можете использовать 'sys.path.append' с относительным путем к папке' Testing'. –