как импортировать модули в Python - PullRequest
1 голос
/ 15 апреля 2019

Я делаю лямбда-функцию в Python.Вот текущая структура моего проекта.

lambda/
|-- package_name/
|   |-- __init__.py
|   |-- lambda_function.py
|   |-- a.py 
|   |-- utils.py
|
|-- tests/
|   |-- __init__.py
|   |-- test_main.py
|-- setup.py
|-- README

Я хотел бы импортировать lambda_function.py и a.py в test_main.py

Я пытался

from a import *
import a
from package_name import a

и некоторые другие, но ничего не работает.

Не могли бы вы объяснить, что является правильным решением и почему то, что я попробовал, на самом деле не работает?

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Если ваш рабочий каталог lambda, попробуйте:

from package_name import a

Есть несколько предопределенных мест, где python будет искать пакеты.Обычно рабочий каталог является одним из них.

См .: https://leemendelowitz.github.io/blog/how-does-python-find-packages.html

0 голосов
/ 15 апреля 2019

from ..package_name.lambda_function.a import *

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

0 голосов
/ 15 апреля 2019

Я бы порекомендовал вам прочитать о import в документации по Python:
Python 3: https://docs.python.org/3/reference/import.html Python 2: https://docs.python.org/2/tutorial/modules.html

но вы можете импортировать его относительно: import * from ../package_name/a, import * from ../package_name/lambda_function

или вам нужно будет добавить папку package_name в sys.path, а затем просто import * from a, как вы пытались.

добавление в sys.path можно выполнить с помощью:

import sys
module_path = "the path to your package_name"
sys.path.insert(0, module_path)
...