2016-06-08 27 views
2

我想在安裝程序後在我的mac上安裝spaCy英文模型。現在我的機器有python 2.7。我已經在venv中安裝了spaCy,然後使用「python -m spacy.en.download」按照網站上的指示安裝模型。當我嘗試這樣做,我得到的迴應如下:麻煩在python 2.7中安裝spaCy英文模型?並將python升級到3.5?

 
$ 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 

然後我試圖安裝spaCy和外機上的模型我寧願不這樣做,但想看看它是否會奏效。我再次遇到了同樣的錯誤。

另外我想知道如果問題與運行Python 2.7有關嗎?我將我的電腦上的python升級到3.5,但不知道如何用3.5替換2.7?現在我可以使用$ python$ python3在翻譯上運行。我如何將所有內容升級到3.5?

預先感謝您!

+1

看起來TKMonitor有巨蟒-3 .x代碼2.7我剛剛碰到了這個bug,最後我修改了本地文件來說'print >> sys。stderr,'進程%d被CTRL-C'%os.getpid()'殺死,現在讓它工作,但我無法將代碼推到任何地方,因爲下載的代碼破壞了 –

+1

看起來他們修復了它, 0.9.4在requirements.txt中 –

回答

0

簡而言之:

spacyplac最新版本沒有這個問題了。

升級spacy版本,它會自動升級plac太:

pip install -U spacy 

在長:

spacy的最新版本中,import plac行是spacy.en.download.py但不再plac library is used in other places

plac是一個參數解析器l本地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 

您在上面發生的錯誤是由

[email protected]:~$ 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() 
[email protected]:~$ 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 

print_function語法Python2和Python3之間的差異,即:造成這被這個commit介紹。

由於存在在https://github.com/micheles/plac/blob/46d8d393fbca8820e5cba5d1da808b65a1c879a3/plac_tk.py#L1

from __future__ import print_functionprint_function應該在已經踢,並允許file=參數在打印用於Python2,例如

[email protected]:~$ 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__進口沒有踢,並且仍然是一個謎給我=(不過那是在另一個時間另一個問題另一個答案...