让我们说这是我的项目结构:
codes
- pre.py
training
- model.py
两个文件夹中都有空__init__.py
,它们位于我项目的根文件夹中。
假设我想从pre.py
:
model.py
import sys
sys.path.insert(0, "../codes")
from pre import *
但是上面的代码会给我ModuleNotFoundError
。
如何解决此错误?
答案 0 :(得分:2)
您可以在最外层创建setup.py文件。所以你的目录树可能看起来像这样
|_project_name
|_codes
|_pre.py
|___init__.py
|_training
|_models.py
|___init__.py
|___init__.py
|_setup.py
然后在setup.py中执行类似这样的操作
from distutils.core import setup
from setuptools import find_packages
requires = [
'six>=1.10.0',
]
if __name__ == "__main__":
setup(
name="project-name",
version="0.0.1",
packages=find_packages(),
author='Your Name',
author_email='email@email.com',
install_requires=requires,
description='The API to fetch data from different sources',
include_package_data=True,
)
最后从最外层的目录使用python setup.py install
它将安装你的包,然后你就可以在模型中轻松地做from project_name.pre import *
还考虑使用virtualenv
来做这类事情。
希望这有帮助。
答案 1 :(得分:1)
尝试使用代码文件夹的完整路径
import sys
sys.path.insert(0, "fullpath")
from pre import *