gpt4 book ai didi

python - 从不同子文件夹的子文件夹相对导入 python 模块

转载 作者:太空狗 更新时间:2023-10-29 20:56:39 25 4
gpt4 key购买 nike

我正在尝试使用 alembic,它是 python 中的一个 sqlalchemy 工具。你输入一个命令,它会生成一个文件夹“alembic”,里面有 py 文件。里面的 py 文件需要在一个名为“myapp”的单独文件夹中链接到我的应用程序。但我无法链接它。它说它不存在并且相对导入不起作用。

所以我需要从 myapp/configs/config.py 文件导入我的配置类。

/apps
+--/alembic
|----env.py <--- the calling file
+--/myapp
|----configs/__init__.py <--- has "DefaultConfig" class imported
|----configs/config.py <--- I want to import the class inside here.

在 env.py 中:

from myapp.configs import DefaultConfig

不起作用。

我试过:

from ..myapp.configs import DefaultConfig

没有成功。

alembic 文档中的示例代码说只需使用“myapp.whatever”。

我什至将我的“/apps”和“/myapp”添加到环境变量中的 PYTHON_PATH。

示例错误:

File "D:\apps\myapp\lib\site-packages\alembic\command.p
y", line 97, in revision
script.run_env()
File "D:\apps\myapp\lib\site-packages\alembic\script.py
", line 191, in run_env
util.load_python_file(self.dir, 'env.py')
File "D:\apps\myapp\lib\site-packages\alembic\util.py",
line 186, in load_python_file
module = imp.load_source(module_id, path, open(path, 'rb'))
File "alembic\env.py", line 5, in <module>
from ..myapp.configs import DefaultConfig as conf
ValueError: Attempted relative import in non-package

最佳答案

您的问题有两种可能的解决方案:

修改你的 PYTHONPATH 环境变量

通过在终端中运行以下 BASH/SH shell 命令将路径添加到应用程序目录:

$ export PYTHONPATH=$PYTHONPATH:'/path/to/apps'

请注意,将它添加到 PATH 环境变量将不起作用。要了解有关 PYTHONPATH 的更多信息,如何管理它以及一般模块的友好信息:

http://www.stereoplex.com/blog/understanding-imports-and-pythonpath

但是请注意,这种方法确实会影响您系统的 PYTHONPATH。强烈建议使用 virtualenv - 以防万一出现问题,它不会影响您的所有系统和其他应用程序。使用 virtualenvwrapper 时:

$ add2virtualenv '/path/to/apps'

更多HERE .

从 Python 脚本中追加路径

或者,您可以通过添加以下内容来执行相同的操作,但只是针对脚本运行时:

import sys
sys.path.append('/path/to/apps')

到您的 apps/alembic/env.py 文件。

最后,在同一个文件中,进行以下更改:

from myapp.configs.config import DefaultConfig

请注意,您的 apps/myapp 文件夹还应包含 __init__.py 文件(可能为空),以使 Python 像 Demian Brecht 一样将其视为一个模块指出。

关于python - 从不同子文件夹的子文件夹相对导入 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682466/

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