나는 IPython이 virtualenv를 인식 하지 못하며 이에 대한 가장 논리적 인 해결책은 각 virtualenv에 ipython을 별도로 설치 하는 것임을 이해합니다.
pip install ipython
여태까지는 그런대로 잘됐다. 내가 알아 차린 한 가지는 IPython $> ipython
이이 virtualenv 아래에 설치되기 전에 사용하는 virtualenv 내에서 IPython의 시스템 전체 복사본이 호출 되면 후속 $> ipython
명령이 시스템 전체 ipython 복사본을 계속 불러 온다는 것입니다.
반면에, ipython을 virtualenv 아래에 설치하기 전에 호출 하지 않으면$> ipython
새로 설치된 복사본을 가져옵니다.
이것에 대한 설명은 무엇입니까?
또한이 동작이 문제가 발생할 것으로 예상해야하는지 궁금합니다.
답변
alias ipy="python -c 'import IPython; IPython.terminal.ipapp.launch_new_instance()'"
이것은 ipython 인스턴스가 항상 virtualenv의 python 버전에 속하는지 항상 확인하는 좋은 방법입니다.
이것은 ipython 2.0 이상에서만 작동합니다.
답변
@SiddharthaRT의 대답은 좋습니다! 이 접근 방식을 따르면 나에게 더 간단합니다.
python -m IPython
이것은 파이썬 bin을 통해 모듈 IPython을 사용하여 가상 환경의 bin을 참조하는지 확인합니다.
답변
가능한 경우 아래 파일을 다음에 추가하여 IPython이 가상 환경을 사용하도록 할 수 있습니다 ~/.ipython/profile_default/startups
.
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
py_version = sys.version_info[:2] # formatted as X.Y
py_infix = os.path.join('lib', ('python%d.%d' % py_version))
virtual_site = os.path.join(os.environ.get('VIRTUAL_ENV'), py_infix, 'site-packages')
dist_site = os.path.join('/usr', py_infix, 'dist-packages')
# OPTIONAL: exclude debian-based system distributions sites
sys.path = filter(lambda p: not p.startswith(dist_site), sys.path)
# add virtualenv site
sys.path.insert(0, virtual_site)
00-virtualenv.py
가능한 한 빨리 변경되도록 이름을 지정하는 것이 좋습니다 .
참고 :이 작업을 수행하려면 ipython이 새 가상 환경에 설치되어 있는지 확인하십시오.
답변
다른 사람들이 언급했듯이 최신 버전의 ipython은 virtualenv를 인식하므로 virtualenv bin activate 스크립트를 사용하여 virtualenv를 사용하여 ipython을 실행할 수 있습니다.
$ source venv/bin/activate
(venv) $ ipython
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
답변
-
소스 ~ / .virtualenvs / my_venv / bin / activate를 사용 하거나 workon my_venv 를 실행 하여 가상 환경을 활성화합니다
(my_venv 가상 환경을 설치 한 방법에 따라 다름). -
ipython 설치
pip 설치 ipython
- 이제 my_venv에서 ipython을 실행합니다.
여전히 시스템의 ipython을로드하는 경우 다음을 실행합니다.
해시 -r
답변
노트북을 열려고한다면 ipython 5도 도움이되지 않습니다. ipython은 (적어도 내 컴퓨터 / 설정에서) virtualenv를 무시합니다. rgtk의 스크립트를 사용해야하지만 선택적 필터 부분과 sys.path.insert를 아래와 같이 수정해야합니다.
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
py_version = sys.version_info[:2] # formatted as X.Y
py_infix = os.path.join('lib', ('python%d.%d' % py_version))
virtual_site = os.path.join(os.environ.get('VIRTUAL_ENV'), py_infix, 'site-packages')
dist_site = os.path.join('/usr', py_infix, 'dist-packages')
# OPTIONAL: exclude debian-based system distributions sites
# ADD1: sys.path must be a list
sys.path = list(filter(lambda p: not p.startswith(dist_site), sys.path))
# add virtualenv site
# ADD2: insert(0 is wrong and breaks conformance of sys.path
sys.path.insert(1, virtual_site)
답변
(Debian / Ubuntu) Python3의 일부 버전 (x)이 설치되어 있다고 가정하고 다음을 수행합니다.
$ sudo apt-get install -y ipython
$ virtualenv --python=python3.x .venv
$ source .venv/bin/activate
$ pip3 install ipython
$ ipython3
Python3 버전을 실행하는 ipython을 시작합니다.