2016-06-08 5 views
2

프로그램 설치 후 내 Mac에 spaCy 영어 모델을 설치하려고합니다. 현재 나의 컴퓨터는 파이썬 2.7을 가지고있다. 나는 venuc에 spaCy를 설치 한 다음 "python -m spacy.en.download"를 사용하여 웹 사이트에 지시 된대로 모델을 설치했습니다. 내가 얻을 할 때 응답에 다음과 같은 : 다음 적응을 설치하려고문제 pyCy 영어 모델을 python 2.7에 설치 하시겠습니까? 파이썬을 3.5로 업그레이드 하시겠습니까?

 
    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 

와 외부 컴퓨터에 모델 :

 
$ python -m spacy.en.download 

역 추적 (가장 최근의 마지막 호출) venv 나는 오히려하지 않을 것이고, 그것이 작동하는지 알기를 원했다. 다시 동일한 오류가 발생했습니다.

또한 문제가 파이썬 2.7 실행과 관련이 있는지 궁금합니다. 내 컴퓨터에서 파이썬을 3.5로 업그레이드했지만 2.7을 2.7으로 바꾸는 방법을 모르겠다. 지금은 $ python 또는 $ python3을 사용하여 통역사에서 실행할 수 있습니다. 어떻게 모든 것을 3.5로 업그레이드 할 수 있습니까?

미리 감사드립니다. 한마디로

+1

파이썬 3가 .x 코드를 2.7에서 실행했다.이 버그도 만났다.'print sys '라고 말하기 위해 로컬 파일을 수정했다.stderr, '프로세스 % d는 CTRL-C'% os.getpid()에 의해 죽었습니다. % os.getpid()'는 현재 작동하지만 다운로드 한 코드가 깨져서 코드를 푸시 할 수 없습니다. –

+1

패치가 수정 된 것처럼 보입니다. requirements.txt의 0.9.4 –

답변

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 

위에서 발생 한 오류

는 Python2 및 Python3의 print_function 구문의 차이, 즉 :

[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 

에 의해 발생합니다 그리고 이것은이 commit에 의해 소개되었다. print_function Python2는, 예를 들어은 인쇄에 file= 파라미터를 걷어 허용해야 https://github.com/micheles/plac/blob/46d8d393fbca8820e5cba5d1da808b65a1c879a3/plac_tk.py#L1

에서 from __future__ import print_function가 있으므로

[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__ 가져 오기에 걷어차하지 않았고 그 = 나에게 신비에 남아있다 (하지만 그건 다른 시간에 다른 질문에 다른 대답 ...

그것은 TKMonitor처럼 보이는