Python 在Google云函数中包含NLTK
我正试图从python的NLTK库中部署一个带有柠檬化和标记器的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
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_数据