与python import混淆(绝对和相对)

捻线机

我为此创建了项目和帮助程序模块。但是某些模块相互使用,例如工作程序1使用helper1,helper2也使用helper1。因此,我完全困惑了如何导入所有这些模块,以便可以独立工作(例如,我想从主脚本中调试helper2),并且它们仍将起作用。总结-如何正确导入模块,以便在使用main_script之外的模块时maint_script和其他模块可以正常工作。对不起我的英语不好。

main program dir/
      main_script.py
      -classes/
          |
          |--helper1.py
          |--helper2.py
      -worker_classes/
          |
          |--worker1.py

目前,我正在每个脚本的乞求中使用这种构造,但我觉得这种方法不适用于python

import os
import sys

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'shell_modules')))
面孔

我在项目内处理导入的方法是以可编辑模式安装项目。这样,所有文件将始终能够从项目根目录开始相互定位。

为此,请按照下列步骤操作:

1)编写一个setup.py文件并将其添加到您的项目根文件夹-根本不需要太多信息:

# setup.py
from setuptools import setup, find_packages

setup(name='MyPackageName', version='1.0.0', packages=find_packages())

2)以可编辑模式安装软件包(最好从虚拟环境中安装)。从项目文件夹中的终端,编写

$ pip install -e .

注意点-这意味着“以可编辑方式从当前目录安装软件包”。

3)您的文件现在可以相互定位,始终从项目根目录开始。helper1.py例如,要导入,请编写:

from classes import helper1

或者:

from classes.helper1 import foo, bar

helper1.py无论文件在项目结构中的什么位置,导入任何文件都是如此

就像我说的那样,您应该为此使用虚拟环境,以便pip不会将软件包安装到主要的Python安装中(如果您的项目有很多依赖项,可能会很麻烦)。

目前,我最喜欢的工具是pipenv使用时,将terminal命令替换为

$ pipenv install -e .

这样您的项目就可以添加到Pipfile中了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章