导入 TextBlob 时出错
Error from importing TextBlob
当我的 Laravel 项目中 运行 一个 Python 脚本时,我遇到了问题。当 运行 python 脚本使用和不使用 virtualenv 时,我没有遇到这个问题。我正在使用 Win 10 64 位。
当 运行 Laravel 中的 python 脚本使用 Symfony/Process 时,出现此错误:
"""
The command "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\Scripts\activate && py C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\main.py" failed.\n ◀
\n
Exit Code: 1(General error)\n
\n
Working directory: C:\xampp\htdocs\projects\laravel-project\public\n
\n
Output:\n
================\n
\n
\n
Error Output:\n
================\n
Traceback (most recent call last):\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\main.py", line 10, in <module>\r\n
from textblob import TextBlob\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\textblob\__init__.py", line 2, in <module>\r\n ◀
from .blob import TextBlob, Word, Sentence, Blobber, WordList\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\textblob\blob.py", line 28, in <module>\r\n
import nltk\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\__init__.py", line 160, in <module>\r\n
from nltk.downloader import download, download_shell\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 2237, in <module>\r\n ◀
_downloader = Downloader()\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 443, in __init__\r\n ◀
self._download_dir = self.default_download_dir()\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 954, in default_download_dir\r\n ◀
raise ValueError("Could not find a default download directory")\r\n
ValueError: Could not find a default download directory\r\n
"""
据我了解,nltk 是一个 textblob 依赖项,但是 nltk/downloader.py 在 default_download_dir 处返回 false(但它应该是真的,因为我在 python shell):
# On Windows, use %APPDATA%
if sys.platform == 'win32' and 'APPDATA' in os.environ:
homedir = os.environ['APPDATA']
# Otherwise, install in the user's home directory.
else:
homedir = os.path.expanduser('~/')
if homedir == '~/':
raise ValueError("Could not find a default download directory")
这是我的 main.py
上声明 textblob 的方式
from textblob import TextBlob
除了这个特定的包之外,我的其他导入没有任何问题。我现在遇到了障碍,所以我们将不胜感激。
我从这个 post 得到了答案:
我所做的是在 py 脚本中初始化一个 NLTK_DATA 环境变量。这解决了问题。
import os
os.environ['NLTK_DATA'] = os.path.abspath('../scripts/nltk_data')
当我的 Laravel 项目中 运行 一个 Python 脚本时,我遇到了问题。当 运行 python 脚本使用和不使用 virtualenv 时,我没有遇到这个问题。我正在使用 Win 10 64 位。
当 运行 Laravel 中的 python 脚本使用 Symfony/Process 时,出现此错误:
"""
The command "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\Scripts\activate && py C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\main.py" failed.\n ◀
\n
Exit Code: 1(General error)\n
\n
Working directory: C:\xampp\htdocs\projects\laravel-project\public\n
\n
Output:\n
================\n
\n
\n
Error Output:\n
================\n
Traceback (most recent call last):\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\main.py", line 10, in <module>\r\n
from textblob import TextBlob\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\textblob\__init__.py", line 2, in <module>\r\n ◀
from .blob import TextBlob, Word, Sentence, Blobber, WordList\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\textblob\blob.py", line 28, in <module>\r\n
import nltk\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\__init__.py", line 160, in <module>\r\n
from nltk.downloader import download, download_shell\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 2237, in <module>\r\n ◀
_downloader = Downloader()\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 443, in __init__\r\n ◀
self._download_dir = self.default_download_dir()\r\n
File "C:\xampp\htdocs\projects\laravel-project\scripts\sentiment\env\lib\site-packages\nltk\downloader.py", line 954, in default_download_dir\r\n ◀
raise ValueError("Could not find a default download directory")\r\n
ValueError: Could not find a default download directory\r\n
"""
据我了解,nltk 是一个 textblob 依赖项,但是 nltk/downloader.py 在 default_download_dir 处返回 false(但它应该是真的,因为我在 python shell):
# On Windows, use %APPDATA%
if sys.platform == 'win32' and 'APPDATA' in os.environ:
homedir = os.environ['APPDATA']
# Otherwise, install in the user's home directory.
else:
homedir = os.path.expanduser('~/')
if homedir == '~/':
raise ValueError("Could not find a default download directory")
这是我的 main.py
上声明 textblob 的方式from textblob import TextBlob
除了这个特定的包之外,我的其他导入没有任何问题。我现在遇到了障碍,所以我们将不胜感激。
我从这个 post 得到了答案:
我所做的是在 py 脚本中初始化一个 NLTK_DATA 环境变量。这解决了问题。
import os
os.environ['NLTK_DATA'] = os.path.abspath('../scripts/nltk_data')