gpt4 book ai didi

python - 使用 __init__.py 修改 sys 路径是个好主意吗?

转载 作者:太空狗 更新时间:2023-10-30 02:52:39 25 4
gpt4 key购买 nike

我想问你一些我在做某事时想到的事情。

我有以下结构:

src
- __init__.py
- class1.py
+ folder2
- __init__.py
- class2.py

我是class2.py,我想导入class1来使用。显然,我不能使用

from src.class1 import Class1

因为它会产生错误。对我有用的解决方法是在 folder2 内的 __init__.py 中定义以下内容:

import sys
sys.path.append('src')

我的问题是这个选项是否有效并且是个好主意,或者是否有更好的解决方案。

另一个问题。假设项目结构是:

src
- __init__.py
- class1.py
+ folder2
- __init__.py
- class2.py
+ errorsFolder
- __init__.py
- errors.py

class1 中:

from errorsFolder.errors import Errors

这很好用。但是,如果我尝试在与 errorsFolder 处于同一级别的 class2 中执行:

from src.errorsFolder.errors import Errors

失败(ImportError:没有名为 src.errorsFolder.errors 的模块)

提前致谢!

最佳答案

尽管必须在包中导入“父”模块有点令人震惊,但您的解决方法取决于您运行应用程序的当前目录,这很糟糕。

import sys
sys.path.append('src')

应该是

import sys,os
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)),os.pardir))

添加当前模块目录的父目录,无论您从哪个目录运行应用程序(您的模块可能被多个应用程序导入,这些应用程序并不都需要在同一个目录中运行目录)

关于python - 使用 __init__.py 修改 sys 路径是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52516849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com