Python导入脚本在同一级别的另一个文件夹上

时间:2017-10-02 12:42:08

标签: python

让我们说这是我的项目结构:

codes

 - pre.py

training

 - model.py

两个文件夹中都有空__init__.py,它们位于我项目的根文件夹中。

假设我想从pre.py

致电model.py
import sys
sys.path.insert(0, "../codes")
from pre import *

但是上面的代码会给我ModuleNotFoundError

如何解决此错误?

2 个答案:

答案 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 *