如何在 Google App Engine 中添加非 Google 提供的第三方 Python 库?我正在尝试在 Google App Engine 中使用 BeautifulSoup,但无法这样做。但我的问题是关于我想在 Google App Engine 中使用的任何库。
6 回答
Google 为您的 GAE 项目中包含的第三方库提供了一种记录方式。
请参阅Python 2.7 文档中库的“将第三方包添加到应用程序”部分。
如果你想包含额外的纯 python 第三方包,你可以通过设置 vendoring 来实现。供应商允许您将包安装到项目的子目录中并将它们包含在您的代码中。要使用供应商,请在项目的根目录中 创建(或修改)appengine_config.py 。
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
然后只需将所有库的源代码放在您的lib
目录中
> pip install beautifulsoup4 -t lib
所以你的项目目录结构如下所示:
project
- lib
- bs4
- your_code.py
这将允许您项目的源文件导入库的包/模块,就好像它们已添加到您的PYTHON_PATH
. 例如:
# 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
其实我认为这个答案更适合这里。
如果您想使用未包含在此列表中的 3rd 方库,则必须手动添加它们。
为了手动包含任何其他库,您必须将它们放在所在的目录中app.yaml
。因此,例如,如果您具有以下结构:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
然后在你的hello.py
你必须把这两行放在文件的开头:
import sys
sys.path.insert(0, 'libs')
完成此操作后,您将能够使用要放入该libs
目录的任何 3rd 方库。
例如:
from bs4 import BeautifulSoup
它在这里的工作方式是:
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
只需将 Beautifulsoup 放在项目的根目录中并全部上传即可
pip install -t lib package_name
lib:第三方库的位置
然后,您可以像从 ipython 或终端使用的普通库一样使用这个包。