【发布时间】:2019-11-25 07:49:34
【问题描述】:
我正在尝试使用安装工具将我的项目打包为 python 中的库。作为我的第一次,我将我的项目安排在以下目录中。从其父目录导入包不会导致任何错误并且工作正常。但是,当我使用安装工具安装它并尝试从常规目录导入时,我在导入包中的文件时遇到导入错误 目录结构如下:
driver_scoring
│ ├── config
│ │ ├── config.py
│ ├── processing
│ │ ├── data_management.py
│ │ ├── scoring_components.py
│ │ └── validation.py
│ ├── __init__.py
│ ├── pipeline.py
│ ├── predict.py
│ ├── train_pipeline.py
│ └── VERSION
├── MANIFEST.in
├── requirements.txt
└── setup.py
在我的 init.py 文件中,我包含了以下代码:
import os
from driver_scoring.config import config
with open(os.path.join(config.PACKAGE_ROOT, 'VERSION')) as version_file:
__version__ = version_file.read().strip()
我收到以下错误:
1 import os
2
----> 3 from driver_scoring.config import config
4
5 with open(os.path.join(config.PACKAGE_ROOT, 'VERSION')) as version_file:
ModuleNotFoundError: No module named 'driver_scoring.config'
而我的setup.py如下:
NAME = 'driver_scoring'
DESCRIPTION = ''
URL = ''
EMAIL = ''
AUTHOR = 'Nevin Baiju'
REQUIRES_PYTHON = '>=3.6.0'
def list_reqs(fname='requirements.txt'):
with open(fname) as fd:
return fd.read().splitlines()
here = os.path.abspath(os.path.dirname(__file__))
try:
with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
long_description = '\n' + f.read()
except FileNotFoundError:
long_description = DESCRIPTION
ROOT_DIR = Path(__file__).resolve().parent
PACKAGE_DIR = ROOT_DIR / NAME
about = {}
with open(PACKAGE_DIR / 'VERSION') as f:
_version = f.read().strip()
about['__version__'] = _version
setup(
name=NAME,
version=about['__version__'],
description=DESCRIPTION,
long_description=long_description,
long_description_content_type='text/markdown',
author=AUTHOR,
author_email=EMAIL,
python_requires=REQUIRES_PYTHON,
url=URL,
packages=find_packages(exclude=('tests',)),
package_data={'driver_scoring': ['VERSION']},
install_requires=list_reqs(),
extras_require={},
include_package_data=True,
license='MIT',
classifiers=[
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy'
],
)
当我尝试从项目的父目录导入它时,我没有收到任何错误,并且我能够根据需要运行该项目。但是,当我尝试从已安装目录安装和导入项目时,出现导入错误。
【问题讨论】:
标签: pip python-3.6 setuptools egg