将Python模块添加到Google App Engine项目

时间:2016-03-18 17:53:57

标签: python google-app-engine

我正在尝试使用Feed-parser模块进行此项目。当我将文件上传到App Engine并运行脚本时,它会返回错误,表示没有名为feed-parser的模块。

所以我想知道是否以及如何在App Engine上安装此模块,以便我可以修复此错误并使用RSS。

错误:

Traceback (most recent call last):
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/s~vlis-mannipulus-bot/1.391465315184045822/main.py", line 7, in <module>
    import feedparser
ImportError: No module named feed parser
  • 发展1:

所以我尝试在我创建的lib目录中安装模块(在这个失败的例子中,我忘了/ lib在--prefix = ..)。我得到了PYTHONERROR,就像shell中所示。我已经对python路径进行了一些研究,我试过的解决方案对我没用。

kevins-MacBook-Pro-2:~ KevinH$ cd /Users/KevinH/Downloads/feedparser   -5.2.1 
kevins-MacBook-Pro-2:feedparser-5.2.1 KevinH$ sudo python setup.py     install --prefix=/Users/KevinH/Documents/Thalia\ VMbot/Thalia-VMbot/
Password:
running install
Checking .pth file support in /Users/KevinH/Documents/Thalia     VMbot/Thalia-VMbot//lib/python2.7/site-packages/
/usr/bin/python -E -c pass
TEST FAILED: /Users/KevinH/Documents/Thalia VMbot/Thalia-    VMbot//lib/python2.7/site-packages/ does NOT support .pth files
error: bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from.  The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/Users/KevinH/Documents/Thalia VMbot/Thalia-VMbot//lib/python2.7/site-   packages/

and your PYTHONPATH environment variable currently contains:

''

Here are some of your options for correcting the problem:

* You can choose a different installation directory, i.e., one that is
on PYTHONPATH or supports .pth files

* You can add the installation directory to the PYTHONPATH environment
variable.  (It must then also be on PYTHONPATH whenever you run
Python and want to use the package(s) you are installing.)

* You can set up the installation directory to support ".pth" files by
using one of the approaches described here:

https://pythonhosted.org/setuptools/easy_install.html#custom-  installation-locations

Please make the appropriate changes for your system and try again.

然后我尝试了&#34; pip&#34;命令,但后来我明白了:

can't open file 'pip': [Errno 2] No such file or directory

根据我所读到的&#34; pip&#34;应该是一个安装python 2.7及更高版本的默认程序。所以,为了确保我安装python3.5并使用它运行它仍然得到相同的错误。我用两个蟒蛇打字:

kevins-MacBook-Pro-2:feedparser KevinH$ python3 pip -m install feedparse

-

不确定这是否可行,但是通过终端我进入了我的系统上安装了feed解析器的默认目录,并将其复制到我制作的lib目录中。然后我用以下内容创建了配置文件:

from google.appengine.ext import vendor

# Add any libraries installed in the "lib" folder.
vendor.add('lib')

部署它并且我仍然得到与上面相同的错误没有名为feeedparser的模块。

道歉,如果我做了一些愚蠢的错误,我仍然在学习过程中。

1 个答案:

答案 0 :(得分:0)

解释如何添加第三方模块的App Engine文档是here

总之,您需要将一个名为&#39; lib&#39;的文件夹添加到应用程序的顶层,然后使用文档中描述的命令将feedparser安装到该文件夹​​中。您还需要按照文档中的描述创建一个appengine_config.py文件。

请注意,并非所有第三方软件包都可以上传到App Engine - 禁止使用带有C扩展名的软件包。 Feedparser看起来还不错。

编辑:基于编辑&#34;开发1&#34;的进一步评论问题。

您的appengine_config.py看起来不错。

你&#34; lib&#34;文件夹应该是您的应用程序文件夹,该文件夹与app.yamlappengine_config.py文件相同。

您需要将feedparser软件包安装到lib文件夹中。 Google文档建议您通过运行命令

来执行此操作

pip install -t lib feedparser

此命令会将feedparser软件包安装到您的lib文件夹中。

您需要安装并运行适用于Python2.x的pip版本 - Python3版本将创建仅在Python3下运行的feedparser版本。

如果您无法为Python2 this question安装点,则可能会提供正确的解决方案,否则我建议您单独询问如何将feedparser安装到自定义安装目录中Mac.I我没有Mac,所以我无法帮助解决这个问题。

在lib文件夹中安装了feedparser后,请验证您的应用是否在本地运行;特别要验证它是否使用了lib / feedparser安装:在导入feedparser后尝试记录feedparser.__file__以检查要导入的文件的位置。

一旦所有内容在本地运行,您都应该能够上传到GAE。

总而言之,您的appengine_config.py看起来很不错,但您需要确保在上传到App Engine之前将适当版本的feedparser安装到app文件夹的lib文件夹中。