Я создал проект в следующем порядке файлов в папках.
src
-->app.py(file)
from ALLfeatures import entities_tracking
entities_tracking.extract()
-->config(folder)
-->__init__.py(file)
-->config.json(file)
{...
'parser': {'folder': '/var/www/data/models'},
...}
-->ALLFeatures(Folder)
-->entities_tracking(folder)
-->segment(folder)
-->__init__.py(file)
######
from ALLfeatures.config import CONFIG
def segment(inputs):
have code for this function
######
-->rulebasedextraction.py(file)
-->__init__.py(file)
####
from .segmentation import segment
def extract(inputs):
have code for this function
###
-->__init.py(file)
-->config.py(file)
import json
from pkgutil import get_data
CONFIG = json.loads(get_data('config', 'config.json').decode())
-->feature2_extractor(folder)
-->feature3_extractor(folder)
-->feature4_extractor(folder)
В коде я пытаюсь извлечь некоторые функции на основе введенного текста. Для удобства я поместил необходимые пути в файл json (внутри папки конфигурации). Я пытаюсь вызвать JSON в переменной CONFIG в config.py. Я пытаюсь вызвать переменную CONFIG везде, где требуется.
Когда я запускаю app.py, у меня нет проблем с импортом переменной, когда это необходимо, и у меня не было проблем при запуске кода.
Я преобразовал тот же код, что и модуль pip,при условии, что я могу извлечь функции, просто используя 'from ALLfeatures import entity_tracking', где бы это ни требовалось.
Я успешно установил созданный пип-модуль в требуемом месте, но когда я пытаюсь использовать 'из ALLfeatures import entity_tracking', я получаю keyerror
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/rdk/Projects/analyzer/.venv/lib/python3.6/site-packages/ALLfeatures/entities_tracking/__init__.py", line 4, in <module>
from .segmentation import segment
File "/home/rdk/Projects/analyzer/.venv/lib/python3.6/site-packages/ALLfeatures/entities_tracking/segmentation/__init__.py", line 7, in <module>
folder = CONFIG['parser']['folder']
KeyError: 'parser'
Когда я сделал этов модуле pip он ищет файл конфигурации. который находится вне папки. У меня есть несколько папок в ALLfeatures, похожих на entity_tracking, где каждая будет извлекать функции различной функциональности. для моих целей программирования я сохранил папку config вне папки ALLfeatures, потому что файлы внутри всей папки feature * _extractor имеют доступ к файлам CONFIG, а пользователь может получить доступ к файлу конфигурации.
В таком случае, как мне решить проблему, если я хочу избежать ошибки и использовать как все другие импортируемые модули pip, которые мы обычно используем?
мой set.py выглядит так
from setuptools import setup, find_packages
REPO_URL = 'https://www....com/.../allfeatures.git'
DOWNLOAD_URL = REPO_URL + '/repository/master/archive.zip'
setup(name='allfeatures',
packages=find_packages(where='src'),
package_dir={'': 'src'},
version='0.10.3.2',
description='Features Extraction',
long_description='features',
author='Energy',
author_email='email@email.com',
url=REPO_URL,
download_url=DOWNLOAD_URL,
keywords=['x', 'y', 'z'
],
classifiers=[
"Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python",
"Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
],
install_requires=[
'future', 'requests', 'enum34', 'bs4', 'flask', 'bs4', 'gensim', 'pyfasttext', 'nltk', 'pandas',
'numpy', 'langid', 'fasttext', 'html2text',
'docprocessor>=0.3.1', 'eshelper>=0.1.6', 'locationid>=0.3.6', 'utils>=1.0.5'
],
platforms=['any'])