[英]Trouble Installing spaCy english model in python 2.7? And upgrading python to 3.5?
安裝程序后,我試圖在Mac上安裝spaCy英文模型。 現在我的機器上有python 2.7。 我已經在venv中安裝了spaCy,然后按照網站上的指示安裝“ python -m spacy.en.download”,以安裝該模型。 當我嘗試這樣做時,我得到以下響應:
$ python -m spacy.en.download
追溯(最近一次通話):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/Users/katietemrowsky/Documents/Desktop/machine/.env/lib/python2.7/site-packages/spacy/en/download.py", line 1, in import plac File "/Users/katietemrowsky/Documents/Desktop/machine/.env/lib/python2.7/site-packages/plac.py", line 38, in from plac_tk import TkMonitor File "/Users/katietemrowsky/Documents/Desktop/machine/.env/lib/python2.7/site-packages/plac_tk.py", line 46 print('Process %d killed by CTRL-C' % os.getpid(), file=sys.stderr) ^ SyntaxError: invalid syntax
然后,我嘗試在venv之外的計算機上安裝spaCy和模型,但我不想這樣做,但想查看它是否可以工作。 我再次遇到相同的錯誤。
另外我想知道問題是否與運行python 2.7有關嗎? 我將計算機上的python升級到3.5,但是不確定如何用3.5替換2.7嗎? 現在,我可以使用$ python
或$ python3
在解釋器上運行它們。 如何將所有內容升級到3.5?
先感謝您!
簡而言之:
最新版本的spacy
和plac
不再存在此問題。
升級您的spacy
版本,它也會自動升級plac
:
pip install -U spacy
總而言之:
在最新版本的spacy
, import plac
行不再位於spacy.en.download.py
而是在其他地方使用了plac
庫
plac
是一個參數解析器,例如本機argparse
或流行的docopt
。
File "/Users/katietemrowsky/Documents/Desktop/machine/.env/lib/python2.7/site-packages/plac_tk.py", line 46
print('Process %d killed by CTRL-C' % os.getpid(), file=sys.stderr)
^
SyntaxError: invalid syntax
您上面發生的錯誤是由Python2和Python3的print_function
語法之間的差異引起的,即:
alvas@ubi:~$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print('foo bar', file=sys.stderr)
File "<stdin>", line 1
print('foo bar', file=sys.stderr)
^
SyntaxError: invalid syntax
>>> exit()
alvas@ubi:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print('foo bar', file=sys.stderr)
foo bar
這是由commit引入的。
由於存在from __future__ import print_function
位於https://github.com/micheles/plac/blob/46d8d393fbca8820e5cba5d1da808b65a1c879a3/plac_tk.py#L1
print_function
應該已經print_function
,並允許在Python2的打印file=
參數,例如
alvas@ubi:~$ python2
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import print_function
>>> import sys
>>> print('foo bar', file=sys.stderr)
foo bar
但是從plac
導入的__future__
尚未開始,這對我來說仍然是個謎=(但這是另一個時間另一個問題的另一個答案...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.