Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Google App Engine中包含第三方Python库?_Python_Google App Engine - Fatal编程技术网

如何在Google App Engine中包含第三方Python库?

如何在Google App Engine中包含第三方Python库?,python,google-app-engine,Python,Google App Engine,如何在Google App Engine中添加Google未提供的第三方python库?我试图在谷歌应用程序引擎中使用BeautifulSoup,但无法做到这一点。但我的问题是我想在Google App Engine中使用的任何库。只需将Beautifulsoup放在项目的根目录中,并将其全部上载即可。您只需将包含要使用的库的文件夹复制到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得到错误。试图解决这个问题。