pip가상 환경 대신 글로벌 사이트에 설치
용사를 합니다.pip3
를 패지를설다에 virtualenv
그러면 패키지가 virtualenv 폴더가 아닌 글로벌 사이트 검색 폴더에 설치됩니다.OS X 매버릭스(10.9.1)에서 Python3 및 virtualenv를 설정하는 방법은 다음과 같습니다.
Homebrew를 사용하여 Python3를 설치했습니다.
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl
변내용경을 했습니다.$PATH
에 있어서 가변적인..bash_profile
다음 행이 추가되었습니다.
export PATH=/usr/local/bin:$PATH
중입니다.which python3
아온다를 합니다./usr/local/bin/python3
(셸을 다시 시작한 후).
참고:which python3
turns / 틸리스즈턴리▁/즈 /usr/bin/python
그래도.
됨.virtualenv
용사를 pip3
:
pip3 install virtualenv
다음으로, 새 항목을 만듭니다.virtualenv
활성화합니다.
virtualenv testpy3 -p python3
cd testpy3
source bin/activate
참고: -p python3를 지정하지 않으면 가상 환경의 bin 폴더에서 pip가 누락됩니다.
중입니다.which pip
그리고.which pip3
다 폴더를 합니다. virtualenv 폴더는 다음과 같습니다.
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
예를 들어, 설치하려고 하면 됩니다.활성화된 가상 환경에서 pip을 사용하여 마크다운하면 pip은 가상 환경의 사이트 패키지 폴더 대신 글로벌 사이트 패키지 폴더에 설치됩니다.
pip install markdown
중입니다.pip list
반환:
Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)
『 』의 /Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages
:
__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/
『 』의 /usr/local/lib/python3.3/site-packages
:
Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/
보시다시피 글로벌 사이트 패키지 폴더에는 Markdown이 포함되어 있지만 virtualenv 폴더에는 포함되어 있지 않습니다.
참고: 이전에 Python2와 Python3를 다른 VM에 설치한 적이 있으며(이 지침에 따름) Python3와 동일한 문제가 있었습니다. 그러나 Python2 기반 가상 환경에 패키지를 설치하는 것은 문제가 없었습니다.
어떤 조언이나 힌트라도 주시면 대단히 감사하겠습니다.
당신이 이 문제를 제기했다니 우습군요, 저도 똑같은 문제를 가지고 있었어요.결국 해결했지만, 원인이 무엇인지는 아직 확실하지 않습니다.
당신의 보오십시를 .bin/pip
그리고.bin/activate
스크립트. 인.bin/pip
쉐방을 보세요.?,▁ ▁if맞▁not▁correct나?그렇지 않으면 수정합니다.그럼 온라인으로~42
의 신의에bin/activate
가상 환경 경로가 올바른지 확인합니다.될 예요.
VIRTUAL_ENV="/Users/me/path/to/virtual/environment"
잘됐으바고잡로면못,,deactivate
,그리고나서. bin/activate
그리고 만약 우리의 상호 문제가 같은 원인이라면, 그것은 효과가 있을 것입니다.그래도 그렇지 않다면, 어쨌든 당신은 옳은 길을 가고 있습니다., ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠwhich pip
반복, 스택 추적 등.
절대적으로 확인하십시오.
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
다른 유사한 이름의 테스트 프로젝트를 참조하지 않고 원하는 것입니다(나는 그 문제가 있었고 어떻게 시작되었는지 전혀 알지 못합니다)여러 가상 환경을 동시에 실행하는 것이 의심됩니다.
이 모든 것이 효과가 없다면, 조 할로웨이가 말했듯이, 일시적인 해결책은 다음과 같습니다.
가상 환경의 파이프를 전체 경로로 실행하기만 하면(실행 경로 검색에 의존하지 않음) 환경을 활성화할 필요도 없습니다.그것은 옳은 일을 할 것입니다.
아마 이상적이지는 않지만, 위기 상황에서 효과가 있을 것입니다.
내 원래 질문에 대한 링크:
VirtualEnv/Pip에서 패키지를 전역으로 설치하려고 합니다.
저에게 이것은 pip 또는 virtualenv 문제가 아니었습니다.그것은 파이썬 문제였습니다.온라인 튜토리얼을 수행한 후 ~/.bash_profile(또는 ~/.bashrc)에서 $PYthonPATH를 수동으로 설정했습니다.이 수동으로 설정된 $PYthonPATH는 허용되어야 하므로 가상 환경에서 사용할 수 있었습니다.
로 한또.add2virtualenv
가상 환경 내에서 어떤 이유로 $PYthonPATH에 프로젝트 경로를 추가하지 않았습니다.
여전히 꼼짝 못할 수도 있는 사람들을 위한 몇 가지 갈라진 길일 뿐입니다.건배!
저도 같은 문제가 있었는데, venv 디렉토리를 제거하고 다시 만들어서 해결했습니다!
deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt
이제 모든 것이 마법처럼 작동합니다.
편집: Python3의 venv를 위해 수정된 위의 코드는 다음과 같습니다.
deactivate # (if venv is activated first deactivate it)
rm -rf venv # Delete the old venv directory
python3 -m venv venv # Recreate a new, empty venv
. venv/bin/activate # Activate it
pip3 install -r requirements.txt # Install the dependencies
가장 먼저 확인해야 할 것은 어떤 위치 파이프가 다음을 확인하는 것입니다.
which pip
가상 환경에 있는 경우 다음과 같은 이점을 얻을 수 있습니다.
/path/to/virtualenv/.name_of_virtualenv/bin/hosts
그러나 어떤 이유에서 시스템 파이프로 해결되는 경우가 있을 수 있습니다.예를 들어 가상 환경 내에서 다음과 같은 정보를 볼 수 있습니다(이는 좋지 않습니다).
/usr/local/bin/vmdk(또는 가상 환경 경로에 없는 모든 파일).
이 문제를 해결하려면 다음에서 pipconfig를 확인합니다.
~/.pipconf
~/.conf/pip
/etc/pip.conf
그리고 Python 경로나 Pip 경로를 강요하는 것이 없는지 확인합니다.
그런 다음 새 터미널을 시작하고 가상 환경을 다시 구축합니다(삭제한 후 다시 생성).
가상 환경의 bin 디렉토리로 이동하여 다음과 같이 기록합니다.
./pip3 install <package-name>
파이썬 2와 3이 설치된 makes에서도 같은 문제가 있었습니다.
저는 제 , 나안 python3와 pip3를에서 있었습니다..bash_profile
.
alias python=/usr/local/bin/python3
alias pip=/usr/local/bin/pip3
및가 환경재를 하여 별칭을 중:python3 -m venv venv
문제를 해결했습니다.
저도 이런 문제가 있었어요.하기 르기pip install <package_name>
/bin
Mambericks Mac의 Python 3.3 가상 환경 내 디렉터리로 인해 Python 패키지가 Python 2.7 글로벌 사이트 패키지 디렉터리에 설치되었습니다.이것은 내 $PATH가 다음을 포함하는 디렉토리로 시작했음에도 불구하고.pip
일이 CentOS에서는 이런 일이 발생하지 않습니다.저에게 있어 해결책은pip3
에 pip
ez_setup을 통해 가상 환경에 pip를 설치했을 때 3개의 "pip" 실행 파일이/bin
- 디토리렉 -pip
,pip3
,그리고.pip3.3
이상하게도, 세 개의 파일이 모두 정확하게 똑같았습니다.하기 르기pip3 install <package_name>
이로 인해 Python 패키지가 로컬 사이트 패키지 디렉터리에 올바르게 설치되었습니다.하기 르기pip
가상 환경에 대한 전체 경로 이름도 올바르게 작동했습니다.Mac에서 $PATH를 제가 예상하는 방식으로 사용하지 않는 이유를 알고 싶습니다.
가상 환경 내에서 파이썬 패키지를 설치하는 동안 동일한 문제가 발생했습니다.제 경우의 근본 원인은 달랐습니다.가상 환경에서 저는 Ubuntu에서 습관이 되지 않고 다음 작업을 수행했습니다.
sudo easy_install -Z <package>
이로 인해 bin/pip shebang이 무시되었고 루트의 비가상 환경 파이썬을 사용하여 글로벌 사이트 패키지에 설치했습니다.가상 환경이 있으므로 "sudo" 없이 패키지를 설치해야 합니다.
저는 Manjaro를 운영하는 것과 같은 문제를 우연히 발견했습니다.는 다을사용가생환다니성습했을 사용하여 .python3 -m ven venv
다음 사용활여니다합성화하다음을▁using다를 사용하여 활성화합니다.source venv/bin/actiave
.which python
그리고.which pip
둘 다 가상 환경에서 올바른 바이너리를 가리켰지만 바이너리의 전체 경로를 사용하는 경우에도 가상 환경에 설치할 수 없었습니다.알고 보니 파이썬-파이프 패키지를 제거했을 때sudo pacman -R python-pip python-reportlab
(의존성을 충족하기 위해 보고서 랩을 포함해야 함) 모든 것이 예상대로 작동하기 시작했습니다.이유는 확실하지 않지만 시스템 패키지가 우선하는 이중 설치 때문일 수 있습니다.
로 업데이트한 후에도 비슷한 문제가 있었습니다.pip==8.0.0
잘못된 경로를 추적하기 위해 디버깅 파이프에 의존해야 했습니다.
내 프로필 디렉터리에 경로 값이 비어 있는 distutils 구성 파일이 있었습니다. 모든 환경이 내에는 이로인내패적가환대다니습설에었경치우되리디토렉루트한동일신경해상절가모한든지키내▁instead▁this▁directory(in경▁to다우▁to▁causing▁all▁case니▁environ▁packages습)./lib/site-packages
).
구성 파일이 어떻게 도착했는지 또는 어떻게 빈 값을 가지고 있는지 확실하지 않지만 pip 업데이트 후에 시작되었습니다.
와 같은 문제로 , 됩니다.~/.pydistutils.cfg
(또는 빈 구성 경로 제거) pip이 기본 분산 구성으로 되돌아갔기 때문에 환경의 문제를 해결했습니다.
다음은 가상 환경을 사용할 때 발생하는 문제를 방지할 수 있는 몇 가지 방법은 다음과 같습니다.
- 프로젝트에 사용할 폴더를 만듭니다.
- 이 폴더 내에 Virtualenv 프로젝트를 만듭니다.
- 프로젝트 환경을 활성화한 후에는 "sudo pip install package"를 사용하지 마십시오.
- 작업을 마친 후에는 항상 환경을 "비활성화"해야 합니다.
- 프로젝트 폴더의 이름을 바꾸지 마십시오.
관행을 더잘과 같은 시뮬레이션이 .
프로젝트/환경에 대한 폴더 만들기
$ mkdir venv
환경 생성
$ cd venv/
$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.
활성화 환경
$ source google_drive/bin/activate
패키지 설치
(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...
환경 내에서 사용 가능한 패키지
(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>
>>> gdrive = pydrive.auth.GoogleAuth()
>>>
환경을 비활성화합니다.
(google_drive) $ deactivate
$
환경 외부에서 패키지를 사용할 수 없음
(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>>
주의:
왜 sudo는 안되나요?
Virtualenv는 $PATH 및 기타 변수와 설정을 정의하는 완전히 새로운 환경을 생성합니다.sudo pip 설치 패키지를 사용하면 Virtualenv를 루트로 실행하여 생성된 전체 환경에서 탈출한 다음 가상 환경이 있는 프로젝트 폴더 내부가 아닌 글로벌 사이트 패키지에 패키지를 설치합니다.
승인된 답변에 언급된 대로 프로젝트의 폴더 이름을 변경하는 경우...
...프로젝트의 bin 디렉토리에 있는 일부 파일에서 일부 변수를 조정해야 합니다.
예:
빈/파이프, 라인 1(쉐뱅)
bin/activate, line 42(Virtual_ENV)
오늘 같은 문제를 발견했습니다.Pip를 글로벌하게 재설치했습니다.sudo easy_install pip
(OSX/Max)로 다시 .sudo virtualenv nameOfVEnv
그런 다음 새 가상 환경을 활성화한 후pip
명령이 예상대로 작동했습니다.
사용하지 않은 것 같습니다.sudo
시, 이 에 수 였을 수 .pip
virtualenv 에서 가상환내액수있니다습었할세스경에 액세스할 수.pip2
이상하긴 했지만 이 수정 전에.
저는 이런 문제가 있었습니다.제 폴더 이름 중 하나에 문제가 발생한 공백이 있었던 것으로 밝혀졌습니다.나는 공간을 제거하고 venv를 사용하여 삭제하고 재인스턴스를 했고 모든 것이 잘 되었습니다.
이 문제는 가상 환경 인스턴스를 생성한 다음 상위 폴더 이름을 변경할 때 발생합니다.
위의 어떤 해결책도 저에게 효과가 없었습니다.
나의 venv는 활동적이었습니다.pip -V
그리고.which pip
올바른 가상 환경 경로를 제공했습니다. 하지만 제가pip install
, -venv 활성패키지된화, my.pip freeze
빈 채로 있었습니다.
모든 환경 변수도 정확했습니다.
마지막으로 pip을 변경하고 virtualenv를 제거했습니다.
easy_install pip==7.0.2
pip install pip==10
sudo pip uninstall virtualenv
venv를 다시 설치합니다.
sudo pip install virtualenv
venv 생성:
python -m virtualenv venv_name_here
그리고 모든 패키지가 내 venv에 다시 올바르게 설치되었습니다.
가상 환경을 생성한 후 VirtualEnvName\Scripts에 있는 pip을 사용해 보십시오.
가상 환경의 Lib\site-packages 내부에 패키지를 설치해야 합니다.
Windows에서도 비슷한 문제가 있었습니다.virtualenv 폴더 이름 내에서 프로젝트의 폴더 구조 이름을 변경하여 발생했습니다.파일의 경로는 변경되지 않았지만 가상 환경이 생성되었을 때 그대로 유지되었습니다.Chase Ries가 언급했듯이 파일의 경로를 VUSTAL_ENV 및 python.exe로 변경했습니다.
- ./venv/스크립트/activate.bat,
set "VIRTUAL_ENV=path_to_venv\venv"
11파 - ./venv/스크립트/Activate.ps1,
$env:VIRTUAL_ENV="path_to_venv\venv"
30줄의 줄이 늘어서 있는 - ./venv/스크립트/pip.exe,
#!d:\path_to_env\venv\scripts\python.exe
. 667줄에서, 저는 . . 저의 경우 667줄에서 오른쪽으로 이동했습니다. 그래서 저는 디스크에서 작업하고 있습니다. 그래서 경로의 시작 부분에 그것의 문자가 있습니다. - ./venv/스크립트/pip3.7.exe,
#!d:\path_to_env\venv\scripts\python.exe
. 으로 이동했습니다. 667줄 오른쪽에 있습니다. - ./venv/스크립트/pip3.exe,
#!d:\path_to_env\venv\scripts\python.exe
. 으로 이동했습니다. 667줄 오른쪽에 있습니다.
저도 같은 문제가 있었습니다.전체적으로만 파이프를 설치합니다.그것은 pip의 구성에 문제가 있다는 것을 의미합니다.
먼저 pip 구성 파일을 찾습니다.
python -m pip config debug
모든 pip 구성 파일이 나열됩니다.'false'(파일 없음)가 있으면 생성합니다(또는 라인 존중 추가 - virtualenv = true).
[global]
default-timeout = 60
respect-virtualenv = true
download-cache = /tmp
log-file = /tmp/pip-log.txt
저도 이런 문제가 있었어요.하기 르기sudo pip install
에 Python 하고 Python을 호출하도록 .pip install
방금 잘 작동했습니다.따라서 가상 환경에서는 sudo를 사용하지 않습니다.
같은 문제입니다.Linux 3및 8 서 Python 3.5 및 pip 8.0.2 치rpm
의
저는 주요 원인을 찾지 못했고 적절한 답변을 줄 수 없습니다.여러 가지 원인이 있을 수 있습니다.
하지만, 저는 제 의견과 해결책을 공유하는 데 도움이 되기를 바랍니다.
pyvenv
와 함께--system-site-packages
./bin
에는 포안함이 되어 있지 않습니다.pip
,pip
할 수 있습니다.- 패키지가 전체적으로 설치됨(BUG?)
pyvenv
없이--system-site-packages
pip
됩니다../bin
(ㄹ 때와는) 버전입니다.ensurepip
)- 패키지가 가상 환경 내에 설치됨(OK)
에 대한 확실한 해결 pyvenv
와 함께--system-site-packages
:
- ▁it▁without 없이 생성합니다.
--system-site-packages
include-system-site-packages = false
true
pyvenv.cfg
또한 가상 환경에 대한 경로를 수정하지 않았는지 확인할 필요가 있습니다.
경우첫번줄은째의 첫 bin/pip
(및 나머지 실행 파일) 경로가 잘못되었습니다.
이러한 파일을 편집하여 경로를 수정하거나 가상 환경을 제거했다가 다시 설치할 수 있습니다.
Python 3ers용
업데이트를 시도합니다.저는 똑같은 문제를 겪었고 체이스의 대답을 시도했지만 성공하지 못했습니다.이를 리팩터링하는 가장 빠른 방법은 가능하면 Python Minor/Patch 버전을 업데이트하는 것입니다.3.5.1을 실행하고 있으며 3.5.2로 업데이트되었습니다.Pyvenv는 다시 한번 작동합니다.
가상 환경을 잘못된 위치에 만들었을 때 이런 일이 발생했습니다.그리고 나서 저는 상관없이 디르를 다른 곳으로 옮길 수 있다고 생각했습니다.중요했어요.
mkdir ~/projects
virtualenv myenv
cd myenv
git clone [my repository]
, 나는 CD에 CD를 .projects
생성하고 복제하기 전에 .를 생성합니다.아, 저는 파괴하고 다시 만들기에는 너무 게을러요.문제없이 디르만 옮기겠습니다.
cd ~
mv myenv projects
cd projects/myenv/myrepo
pip install -r requirements
아뇨, 더 많은 권한을 원해요, 그게 뭐죠?나는 이상하다고 생각했지만, Sudo Away!그런 다음 패키지를 전역 위치에 설치했습니다.
제가 배운 교훈은 가상 환경을 삭제하는 것입니다.움직이지 마.
Divio를 설치한 후 이 문제가 발생했습니다. 터미널을 시작할 때 어떤 방식으로든 내 PATH나 환경이 변경되었습니다.
이 경우의 해결책은 단지 하는 것이었습니다.source ~/.bash_profile
원래 pyenv/pyenv-virtualenv 상태로 돌아가도록 이미 설정해야 합니다.
프로젝트 폴더에 접두사="가 있는 setup.cfg 파일입니다.
프로젝트 폴더 외부의 가상 환경에서 pip 설치를 실행하는 것은 내부에서 pip에게 기본값이 "/"인 빈 접두사를 사용하도록 지시하는 것이었습니다.
수정된 파일을 제거
저는 이 문제를 겪었고, 위의 모든 해결책을 시도한 후 모든 것을 제거하고 다시 시작했습니다.
제 경우에는 제가 사용했습니다.sudo
중 때에 대한 합니다.
나는 매우 화가 났습니다!하지만 효과가 있었어요!
우분투 시스템에서 pip을 통해 패키지를 설치할 때는 어떤 이유로 'sudo'를 사용해야 합니다.이로 인해 패키지가 글로벌 사이트 패키지에 설치됩니다.미래에 이 문제에 직면할 수 있는 모든 사람들을 위해 이것을 여기에 둡니다.
저는 제목부터 정확히 문제가 있었고, 그것을 해결했습니다.Pip은 PATH를 청소한 후 venv 사이트 패키지에 설치하기 시작했습니다. 처음에는 로컬 ~/bin 디렉토리에 대한 경로가 있었습니다.
그래서 제 조언은 환경 변수에 "쓰레기"나 비표준적인 것이 있는지 철저히 확인하는 것입니다.안타깝게도 가상 환경은 이러한 환경에 민감할 수 있습니다.
행운을 빕니다.
간단한 답변은 매개 변수 "—no-site-packages"를 사용하여 명령 virtualenv를 실행하는 것입니다.
긴 답변과 설명 :-
그래서 여기저기 뛰어다니며 많은 일들을 겪은 후에 저는 제 자신이 문제라는 것을 깨달았습니다.위의 답변들이 아이디어를 주었지만 저는 모든 것을 다시 검토하고 싶습니다.
문제는 환경을 활성화하는 경우에도 가상 환경을 생성하는 방식 때문에 시스템 환경을 참조한다는 것입니다.
virtualenv env -p python3 명령을 실행하면 virtualenv가 설치되지만 no-global-site-provider는 생성되지 않습니다.txt의
따라서 source activate 명령을 사용하여 환경을 활성화할 때 이 파일이 sys.path에 env 경로를 추가하지 않고 systems python을 사용하는지 확인하는 site.py 이라는 파일이 실행됩니다.
이 문제를 해결하려면 추가 매개 변수를 사용하여 virtualenv를 실행하십시오. 사이트 패키지가 없는 경우 해당 파일이 생성되고 환경을 활성화하면 사용자 지정 환경 경로가 PATH 변수에 추가되어 액세스할 수 있습니다.
위에서 많은 좋은 토론을 했지만, 가상 환경 사례가 사용되었습니다.이제 'conda'가 가상 환경을 관리하는 데 권장되는 툴이기 때문에 pip in conda env를 실행하는 단계를 다음과 같이 요약했습니다.
py36r을 env의 이름으로 사용하고 /opt/conda/envs는 envs의 접두사입니다.)
$ source /opt/conda/etc/profile.d/conda.sh # skip if already done
$ conda activate py36r
$ pip install pkg_xyz
$ pip list | grep pkg_xyz
실행된 파이프는 다음 위치에 있어야 합니다./opt/conda/envs/py36r/bin/pip
(아닙니다./opt/conda/bin/pip
).
또는 콘다 활성화 없이 다음을 실행할 수 있습니다.
$ /opt/conda/envs/py36r/bin/pip
또한 콘다를 사용하여 설치하는 경우 활성화하지 않고 설치할 수 있습니다.
$ conda install -n py36r pkg_abc ...
언급URL : https://stackoverflow.com/questions/20952797/pip-installing-in-global-site-packages-instead-of-virtualenv
'source' 카테고리의 다른 글
투명 배경의 신속한 모달 뷰 컨트롤러 (0) | 2023.08.17 |
---|---|
어느 것이 더 빠릅니까?SELECT * 또는 SELECT column1, column2, column3 등 (0) | 2023.08.17 |
X-Requested-With 헤더 서버 검사가 Ajax 기반 애플리케이션의 CSRF로부터 보호하기에 충분합니까? (0) | 2023.08.17 |
Powershell에서 Native .tar 추출 (0) | 2023.08.17 |
:before 및 :before CSS 선택기를 사용하여 HTML 삽입 (0) | 2023.08.17 |