如何在appengine proj的libraries文件夹中修改整个requests包的路径

2024-05-14 18:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用AppEngine已经有一段时间了,在使用外部库时总是会遇到一些摩擦,因为我需要修改每个import语句来反映库不在项目的基本目录中这一事实。在

例如,我的目录结构可能类似(安装了请求库)

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

不过,阿彭吉希望

^{pr2}$

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

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_uu.py文件的开头。然而,我突然意识到,必须有一种更有效的方法来保持干燥-但我似乎找不到它。我尝试过将它简单地包含在库中最顶层的uinit_uuy.py文件中,然后再次将其包含在每个包中最顶层的uu init_uuy.py文件中。但不幸的是,这不适用于子包。有没有办法做一个改变来解决这个问题?在


Tags: 文件pathpyimport目录librariesinitos
1条回答
网友
1楼 · 发布于 2024-05-14 18:21:31

我的第三方lib都在lib目录中

我只包括

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

在阿彭丁_配置.py它在任何代码之前加载。在

如果find需要插入到sys.path的开头,而不是末尾,如果您使用的libs的特定版本,比如webob,而不是appengine可用版本的一部分。在

那么你就不必修改任何库了。。。。在

这是相当标准的python行为。在一个正常的桌面安装情况下,你正在安装vie easy_install,它将东西粘在诸如站点包和设置路径等地方。。。。但是如果你不使用这些,你不能用appengine,你必须自己做路径操作。在

相关问题 更多 >

    热门问题