gpt4 book ai didi

python - 在 Django 中导入 global/app lib 文件夹

转载 作者:行者123 更新时间:2023-11-28 20:51:15 25 4
gpt4 key购买 nike

我有一个像这样的 Django 结构(只显示库):

project/lib/ # Global libraries that will be used cross apps
project/lib/global_stuff.py
project/apps/app1/lib/special_for_app1.py
project/apps/app2/lib/special_for_app2.py

有些应用没有 lib 文件夹。

from apps.app1.lib import special_for_app1 工作正常。但是,当我在一个已经包含本地 lib 文件夹的文件夹中时,如何从全局 lib 文件夹导入?

从其中一个应用程序的 views.py 文件内部:


from lib import global_stuff

给我 ImportError: cannot import name global_stuff


从 .lib 导入 global_stuff

给我 ImportError: cannot import name global_stuff


from ..lib import global_stuff

给我 ImportError: No module named lib


from ...lib import global_stuff

给我 ValueError: Attempted relative import beyond toplevel package


from project.lib import global_stuff

可行,但我真的不想在导入时一直使用项目名称本身。


有没有办法解决这个问题,不在导入中使用项目名称,或者改变整个库的想法。

或者有没有其他好的做法来存储代码的主要部分?

最佳答案

您不想将项目名称与导入关联是正确的,因此有一个通用模式:

project/
|__/source/
| |__/lib/
| |__/app/
|__/deployment/ # code for your production deployment maybe
|
|__/docs/
|__/tests/
|__README
|__requirements.txt

并将/path/to/project 放在你的 virtualenv 路径中(你使用 virtualenv 对吗?)。

然后你可以在你的代码里面做

from source.lib.blah import foo
from source.app.baz import bar

编辑:当然,只有在您不将代码作为开源发布时,这才是最佳选择。仅当您有一个内部项目时,管理层不断更改项目名称 :D

关于python - 在 Django 中导入 global/app lib 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461705/

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