Вопросы

Python: как импортировать пользовательский модуль

Я только начинаю с Python и имею больше опыта работы с C#\Java. Так что у меня болит голова, как мне импортировать мои модули Python в другой пользовательский модуль? Я уже пробовал пару вещей:

ТАК: Python не может найти мой модуль

ТАК: не могу импортировать свои собственные модули

SO: Ошибка импорта: модуль не назван при импорте моего собственного модуля < /а>

и еще несколько, но обычно мне предлагают использовать относительный импорт (используя соответствующее количество . перед оператором импорта). Мне это кажется хрупким, потому что, насколько мне известно, импорт является относительным и разрешается в зависимости от того, где был выполнен file.py.

Итак, вот структура моего проекта в PyCharm:

Project
├───lib
│    ├───__init__.py
│    ├───pages
│    │   ├───__init__.py
│    │   ├───pageA.py
│    │   └───pageB.py
│    └───actions
│        ├───__init__.py
│        ├───actionA.py
│        └───actionB.py
├───tests
│    ├───__init__.py
│    ├───base_test.py
│    └───search_test.py
└───main.py

В моем search_test.py я импортирую модуль from lib.actions.actionA import ActionA, в actionA.py я импортирую модуль типа from lib.pages.pageA import PageA. А вот мой main.py:

import unittest
from tests.search_test import SearchTest

def create_test_suite():
    test_suite = unittest.TestSuite()
    test_suite.addTest(SearchTest())
    return test_suite


if __name__ == 'main':
    suite = create_test_suite()
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

Когда я запускаю это в PyCharm, он работает отлично. Но теперь мне нужно запустить его из консоли:

D:\Projects\Python Projects> python -m unittest project_name.main

и я стою перед ImportError: no module named 'lib'. С этим:

D:\Projects\Python Projects\project_name> python main.py

Ничего не произошло.

Читать:
Не понимаю, как Prolog присваивает значения. Почему Prolog не связывает X, если нет скобок?

Что я могу сделать? Должен ли я придерживаться относительного шаблона или есть импорт каких-то Java-подобных пакетов?

в вашем файле search_test.py import os import sys sys.path.append(os.path.join(os.path.dirname(file),’../’)) из lib.actions. actionA импортирует ActionA, а затем вы можете запускать его из любого каталога.   —  person Amrait Dalerian    schedule 18.12.2020

Похожие записи

VSCode: сохраняйте фокус в Viewlet управления версиями при открытии файла

admin

передача реквизитов как classNames в next.js

admin

Менеджер пакетов пряжи: установка зависимостей из частного репозитория Bitbucket

admin

Родительский вид не обновляется после закрытия дочернего представления

admin

Действия Github: [удаленное отклонение] мастер — ›мастер (неглубокое обновление не разрешено), ошибка: не удалось отправить некоторые ссылки

admin

Обновление сценариев реакции до 4.x.x нарушает работу моего приложения

admin