簡體   English   中英

無法在python 2.7中安裝spaCy英文模型? 並將python升級到3.5?

[英]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?

先感謝您!

簡而言之:

最新版本的spacyplac不再存在此問題。

升級您的spacy版本,它也會自動升級plac

pip install -U spacy

總而言之:

在最新版本的spacyimport 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM