gpt4 book ai didi

python - 我怎样才能简单地修改我的 appengine 项目中库文件夹中整个请求包的路径

转载 作者:行者123 更新时间:2023-11-28 21:58:28 26 4
gpt4 key购买 nike

我使用 AppEngine 已经有一段时间了,在使用外部库时总是有一些摩擦,我需要修改每个导入语句以反射(reflect)库不在项目的基本目录中的事实.

例如,我的目录结构可能看起来像(安装了请求库)

/myapp/app.yaml
/myapp/main.py
/myapp/libraries/requests/packages/
/myapp/libraries/requests/__init__.py
/myapp/libraries/requests/adapters.py
etc...

但是 appengine 期望类似的东西

/myapp/app.yaml
/myapp/main.py
/myapp/requests/packages/
/myapp/requests/__init__.py
/myapp/requests/adapters.py
/myapp/requests/api.py
etc...

然后我需要进入每个请求文件以将导入修改为类似

from libraries.requests import adapters

而不是简单地

import adapters

可能在 api.py 中。如果我不修改它,我会收到一个导入错误,例如

ImportError: No module named adapters

我看过以下 How to import modules in Google App Engine?这建议使用

修改路径(尽管应用程序的代码不同)
sys.path.append(os.path.join(os.path.dirname(__file__), 'libraries'))

为了将这个转化为我的问题,我可以放一些类似的东西

sys.path.append(os.path.dirname(__file__))

在库中每个 __init__.py 文件的开头。然而,令我震惊的是,必须有一种更有效的方法,并且与 DRY 保持一致——但我似乎找不到它。我试过简单地将它包含在库中最顶层的 __init__.py 文件中,然后再次包含在每个包中最顶层的 __init__.py 文件中。不幸的是,这不适用于子包。有没有办法通过更改来解决此问题?

最佳答案

我的所有第三方库都在 lib 目录中

我只是包括

sys.path.insert(0,'./lib')

在您的任何代码之前加载的 appengine_config.py 中。

如果发现它需要插入到 sys.path 的开头,而不是插入到结尾,如果您使用特定版本的库(如 webob),这些库不是应用引擎可用版本的一部分。

然后你不必修改任何库等....

这是非常标准的 Python 行为。在正常的桌面安装情况下,您正在安装 vie easy_install,它会将东西粘在站点包和设置路径等地方......但是如果你没有使用任何这些,并且你不能使用 appengine 你必须做自己操纵路径。

关于python - 我怎样才能简单地修改我的 appengine 项目中库文件夹中整个请求包的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18248784/

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