#python #jupyter-notebook #databricks #python-wheel
Вопрос:
Я создал файл колеса python, содержащий два файла python (file1.py и file2.py), которые имеют некоторые индивидуальные модули. file2.py имеет зависимость от file1.py.
Мой локальный каталог выглядит следующим образом после создания файла wheel:
myfunc_wheel
├── build
|--myfunc.eg-info
└── myfuncpkg
|_ __init__.py
└── file1.py
|__ file2.py
|__ dist
|__myfunc-0.01-pu3-none-any.whl
|__ setup.py
file1.py:
def hello_world():
print("hello world")
file2.py
import file1
#some functions
setup.py:
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="myfunc",
version="0.0.1",
author="xxx",
author_email="x",
description="xxxx",
long_description=long_description,
long_description_content_type="text/markdown",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.7',
)
Когда я запустил оба файла 1 и файл 2 локально, он не выдал ошибку.
Но после того, как я установил файл wheel в кластер Databricks и попытался импортировать модули в записную книжку Databricks, возникла ошибка, из-за которой файл2 не может найти файл1.
from myfuncpkf import file1
from myfuncpkg import file2
ModuleNotFoundError: No module named 'file1'
Я также попытался указать весь путь к файлу1, но это тоже не сработало.
Как я должен настроить свои файлы, чтобы зависимость работала с данными?
Ответ №1:
Чтобы сделать каталог пакетом, вам нужно иметь __init__.py
в каждой папке. попробуйте поместить пустой __init__.py
файл в свой myfuncpkg
каталог. Это должно решить проблему. обратитесь: https://realpython.com/lessons/package-initialization/
Комментарии:
1. спасибо, что ответили. Я проверил, что у меня действительно есть init.py в myfuncpkg. И зависимость работает и в моем местном тоже. Но не уверен, почему это не работает, когда я использую его в базах данных.