如何在Google App Engine中包含第三方Python库?
如何在Google App Engine中添加Google未提供的第三方python库?我试图在谷歌应用程序引擎中使用BeautifulSoup,但无法做到这一点。但我的问题是我想在Google App Engine中使用的任何库。只需将Beautifulsoup放在项目的根目录中,并将其全部上载即可。您只需将包含要使用的库的文件夹复制到App Engine项目中即可 然后,当您部署时,它将随应用程序一起上载并可供使用 编辑:我现在就是这样做的。那就这么做吧 事实上我觉得这里更合适 如果要使用中未包含的第三方库,则必须手动添加它们 为了手动包含任何其他库,您必须将它们放在如何在Google App Engine中包含第三方Python库?,python,google-app-engine,Python,Google App Engine,如何在Google App Engine中添加Google未提供的第三方python库?我试图在谷歌应用程序引擎中使用BeautifulSoup,但无法做到这一点。但我的问题是我想在Google App Engine中使用的任何库。只需将Beautifulsoup放在项目的根目录中,并将其全部上载即可。您只需将包含要使用的库的文件夹复制到App Engine项目中即可 然后,当您部署时,它将随应用程序一起上载并可供使用 编辑:我现在就是这样做的。那就这么做吧 事实上我觉得这里更合适 如果要使用中
app.yaml
所在的目录中。例如,如果您具有以下结构:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
然后在您的hello.py
中,您必须在文件的开头放置以下两行:
import sys
sys.path.insert(0, 'libs')
完成此操作后,您将能够使用要放入libs
目录中的任何第三方库
例如:
from bs4 import BeautifulSoup
# file: your_code.py
import bs4 # no need for 'from lib import bs4'
# do stuff with bs4...
它在这里的工作方式是:
import sys
# sys.path.insert(0, 'libs') #"Old" way, not working for me.
sys.path.append(os.path.join(os.path.dirname(__file__), "libs")) # This works!
然后正常导入:
from bs4 import BeautifulSoup
谷歌已经为您的GAE项目中包含第三方库提供了一种文档化的方式 看 如果您想包含其他纯python第三方软件包,可以通过设置vendoring来实现。Vendoring允许您将软件包安装到项目的子目录中,并将其包含在代码中。要使用vendoring,请在项目根目录中创建(或修改)appengine\u config.py 然后把所有库的源代码放到
lib
dir中
> pip install beautifulsoup4 -t lib
因此,您的项目目录结构如下所示:
project
- lib
- bs4
- your_code.py
这将允许项目的源文件导入libs的包/模块,就像它们被添加到PYTHON\u路径中一样。例如:
from bs4 import BeautifulSoup
# file: your_code.py
import bs4 # no need for 'from lib import bs4'
# do stuff with bs4...
您还可以通过执行以下命令轻松安装requirements.txt文件中的所有内容
> pip install -t lib -r requirements.txt
pip安装-t lib包\u名称
lib:第三方库的位置
然后,您可以像从ipython或terminal使用的普通库一样使用此软件包。我可以将其放在一些特定的文件夹中,如-“lib”中吗?是的,可以操作sys.path或使用“site.addsitedir”(“lib”)中的站点模块。按照说明操作后,我仍然对此有问题。GAE有什么变化吗?Jesse的答案比IMHO好得多。可能重复我刚刚在这里发布了OP问题的更新答案:这个答案似乎比被接受的答案更好。谢谢你,杰西!这对我来说奏效了很长一段时间,但却开始莫名其妙地失败。我现在得到了“virtualenv:无法访问库:没有这样的virtualenv或站点目录”@bgenchel@PrestonCrawford你们两个都能解决问题吗?我从未见过virtualenv
错误,这种方法目前仍然适用于我。如果你仍然没有解决它,请发布一个新的问题并链接到这里,我会尽力帮助你。请确保添加许多细节。我想,我所遇到的情况是,我试图将lib作为一个包导入,而不了解该供应商。add(“lib”)意味着您可以访问其中的库,就像它们在您的python路径上一样。抛出错误是因为在我的需求文件上运行pip安装后,我忘记在文件夹中放置init.py。谢谢你的提议!!我是,我不是。我现在只是通过PyCharm得到错误。试图解决这个问题。