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

时间:2013-02-13 10:01:50

标签: python google-app-engine

如何在Google App Engine中添加第三方python库,这些库不是由Google提供的?我正在尝试在Google App Engine中使用BeautifulSoup而无法这样做。但我的问题是我想在Google App Engine中使用的任何库。

6 个答案:

答案 0 :(得分:53)

Google为GAE项目中包含的第三方库提供了一种记录方式。

请参阅"Adding Third-party Packages to the Application" section of the Libraries in Python 2.7 docs

  

如果要包含其他纯python第三方软件包,可以通过设置vendoring来实现。供应允许您将包安装到项目的子目录中,并将它们包含在您的代码中。要使用vendoring,请在项目的根目录中创建(或修改) appengine_config.py

from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')

然后把你所有的libs' lib目录

中的源代码
> pip install beautifulsoup4 -t lib

所以你的项目目录结构如下所示:

project
- lib
  - bs4
- your_code.py

这将允许您项目的源文件导入libs'包/模块就像它们被添加到您的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

答案 1 :(得分:46)

实际上我觉得this answer在这里更合适。

如果您想使用this list中未包含的第三方库,则必须手动添加它们。

为了手动包含任何其他库,您必须将它们放在app.yaml所在的目录中。例如,如果您有以下结构:

hello
├── libs
│   └── bs4 
├── hello.py 
└── app.yaml

然后在你的hello.py中,你必须将这两行放在文件的开头:

import sys
sys.path.insert(0, 'libs')

完成此操作后,您将能够使用您要放在libs目录中的任何第三方库。

例如:

from bs4 import BeautifulSoup

答案 2 :(得分:3)

您只需将包含您要使用的库的文件夹复制到您的应用引擎项目中即可。

然后当您部署它时,随应用程序一起上传并可供使用。

编辑:Jesse's answer就是我现在这样做的方式。那样做吧!

答案 3 :(得分:1)

这里的工作方式是:

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

答案 4 :(得分:0)

只需将Beautifulsoup放在项目的根目录中并上传所有内容

答案 5 :(得分:0)

pip install -t lib package_name

lib 第三方库的位置

然后你可以使用这个软件包,就像你从ipython或终端使用的普通库一样。