Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Python 在Google云函数中包含NLTK_Python_Google Cloud Platform_Google Cloud Functions_Nltk - Fatal编程技术网

Python 在Google云函数中包含NLTK

Python 在Google云函数中包含NLTK,python,google-cloud-platform,google-cloud-functions,nltk,Python,Google Cloud Platform,Google Cloud Functions,Nltk,我正试图从python的NLTK库中部署一个带有柠檬化和标记器的google云函数。NLTK要求使用 import nltk nltk.download('punct') nltk.download('wordnet') 因此,这些不能在requirements.txt文件中指定。在requirement.txt中唯一可以提到的是nltk 我确实浏览了谷歌文档页面,并遵循了所有步骤 首先,我使用将整个虚拟环境的依赖项移动到一个名为lib的目录中 pip install -t lib nltk

我正试图从python的NLTK库中部署一个带有柠檬化和标记器的google云函数。NLTK要求使用

import nltk
nltk.download('punct')
nltk.download('wordnet')
因此,这些不能在requirements.txt文件中指定。在requirement.txt中唯一可以提到的是nltk

我确实浏览了谷歌文档页面,并遵循了所有步骤

首先,我使用将整个虚拟环境的依赖项移动到一个名为lib的目录中

pip install -t lib nltk
然后我在lib目录中创建了
\uuuu init\uuuu.py
文件。并将我的所有import语句更改为import from lib。然而,当从lib目录使用nltk包时,我经常会抛出错误,我认为这是由于相对路径造成的


回溯(最近一次呼叫最后一次):
文件“main.py”,第1行,在
从lib.nltk.stem导入WordNetLemmatizer
文件“/Users/aakashpatel/Documents/resume compare/lib/nltk/_init__.py”,第99行,在
从nltk.internals导入配置\u java
ModuleNotFoundError:没有名为“nltk”的模块

如果我在
lib/nltk
文件夹的
\uuuu init\uuuuuu.py
文件下查看,就会发现一个来自nltk.internals import config\u java的import语句
,它找不到,因为它必须从lib.nltk.internals import config\u java
转换为
。我不能继续改变这一点,因为会有很多其他地方简单地提到导入来自nltk或其他东西

我如何解决这个问题?难道我没有按照所有步骤正确部署到谷歌云功能吗?

我明白了

您需要在
$PYTHONPATH
变量中添加lib目录的路径。你可以简单地写

import sys
sys.path.append('lib')
但光靠这一点并不能解决问题。NLTK下载保存在
NLTK_data
目录中,因此必须将目录复制到
lib
文件夹或包的文件夹中,然后将路径附加到
nlkt.data

import sys
sys.path.append('lib/')

import lib.nltk as nltk
nltk.data.path.append('lib/nltk_data/')
因此,按照上面链接中描述的步骤,顶部的代码块应该可以解决Google Cloud函数中的NLTK问题。

我找到了答案

您需要在
$PYTHONPATH
变量中添加lib目录的路径。你可以简单地写

import sys
sys.path.append('lib')
但光靠这一点并不能解决问题。NLTK下载保存在
NLTK_data
目录中,因此必须将目录复制到
lib
文件夹或包的文件夹中,然后将路径附加到
nlkt.data

import sys
sys.path.append('lib/')

import lib.nltk as nltk
nltk.data.path.append('lib/nltk_data/')
所以顶部的代码块应该在遵循上面所附链接中描述的步骤后解决Google Cloud函数中的NLTK问题。

正如我所提到的,实际上没有必要将NLTK打包为本地依赖项,您只需在代码中包含数据文件即可,然后用
nltk_数据
目录路径追加
nltk.data.path

正如我所提到的,实际上没有必要将nltk打包为本地依赖项,您只需在代码中包含数据文件,然后用
nltk.data.path
目录路径追加
nltk_数据