В python3, как я могу проверить файл .py, который находится в подкаталоге корня рабочей области?

При компиляции шаблоны должны быть созданы экземплярами , прежде чем их компилировать в объектный код. Это создание может быть достигнуто только в том случае, если известны аргументы шаблона. Теперь представьте сценарий, в котором функция шаблона объявлена ​​в a.h, определенная в a.cpp и используемая в b.cpp. Когда компилируется a.cpp, не обязательно известно, что для предстоящей компиляции b.cpp потребуется экземпляр шаблона, не говоря уже о том, какой конкретный экземпляр это будет.

Можно утверждать, что компиляторы можно сделать умнее, чтобы «смотреть вперед» для всех применений шаблона, но я уверен, что это было бы нелегко создавать рекурсивные или другие сложные сценарии. AFAIK, компиляторы этого не делают. Как заметил Антон, некоторые компиляторы поддерживают явные декларации экспорта экземпляров шаблонов, но не все компиляторы поддерживают его (пока?).

1
задан Traeyee 3 March 2019 в 16:17
поделиться

3 ответа

Ему не нужно имя каталога. Например, предположим

 ├── main.py
 └── subdir
    ├── __init__.py
    ├── sub1.py
    └── sub2.py

в main.py

from subdir import sub2
sub2.foo()

в /subdir/sub1.py

from sub2 import foo

if __name__ == '__main__':
    foo()

в /subdir/sub2.py [ 117]

def foo():
    print("foo!")

Независимо от WORKSPACE везде, где я запускаю sub1, будет работать

0
ответ дан Ali Hallaji 3 March 2019 в 16:17
поделиться

Просто не делай так. Организуйте свой пакет и используйте относительный импорт внутри него, не упоминая имя родительского пакета. При необходимости используйте подпакеты. Наконец (или с самого начала, в зависимости от вашего настроения), создайте подпакет с именем tests, содержащий все ваши тесты. Импортируйте оттуда то, что вы хотите проверить в своем пакете, так же, как вы импортируете из любого другого места внутри вашего пакета. Используйте модуль unittest для написания внутреннего пакета unittest.TestCase для тестов.

Из корня пакета выполните python -m unittest discover, см. здесь или настройте отчет о выполнении тестов и выводе, см. здесь . Вы, вероятно, хотите некоторое время изучить эту страницу помощи.

Теперь вы можете запустить все свои тесты одновременно, хотя есть способы выбрать только некоторые.

0
ответ дан progmatico 3 March 2019 в 16:17
поделиться

Полагаю, вы могли бы добавить

import sys
sys.path.append('subdir')

from subdir import sub1

к вашему main.py, таким образом, он получит все относительные значения импорта в этой подпапке для вас, нет необходимости каждый раз вызывать подпапку

и в sub1.py просто

from sub2 import foo
0
ответ дан lupodellasleppa 3 March 2019 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: