Virtualenv: site.pyλŠ” python 2.7κ³Ό ν˜Έν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2012λ…„ 11μ›” 09일  Β·  24μ½”λ©˜νŠΈ  Β·  좜처: pypa/virtualenv

μš°λ¦¬λŠ” python 2.7을 λ…μ μ μœΌλ‘œ μ‚¬μš©ν•˜λ©° python 2.7이 μžˆλŠ” λͺ¨λ“  가상 ν™˜κ²½μ˜ site.pyκ°€ python 2.7에 μΆ”κ°€λœ λ§Žμ€ μƒˆλ‘œμš΄ κΈ°λŠ₯이 λΆ€μ‘±ν•œ py2.6의 site.pyλ₯Ό μ‚¬μš©ν•œλ‹€λŠ” 사싀을 였늘 λ°œκ²¬ν•œ 것은 λ†€λΌμš΄ μΌμž…λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν•΄κ²° 방법: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" λŠ” λ‚΄ Python μ‚¬μ΄νŠΈ νŒ¨ν‚€μ§€ λ””λ ‰ν† λ¦¬μ˜ μœ„μΉ˜λ₯Ό ​​찾도둝 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

λͺ¨λ“  24 λŒ“κΈ€

λ‹Ήμ‹ μ—κ²Œ νš¨κ³Όκ°€ μ—†λŠ” 예λ₯Ό λ“€μ–΄μ£Όμ‹€ 수 μžˆμŠ΅λ‹ˆκΉŒ?

site.getsitepackages()κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

OS Xμ—μ„œ μž¬ν˜„:

$ virtualenv -p python2.7 ve
$ ./ve/bin/python -c 'import site; print(getattr(site, "getsitepackages"))'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'

venv μ™ΈλΆ€μ—μ„œ μ‹€ν–‰ν•˜λ©΄ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

``` $ python -c 'import site; print(getattr(site, "getsitepackages"))' <function getsitepackages at 0x104198410>

``````

$ ./ve/bin/python -c 'κ°€μ Έμ˜€κΈ° μ‚¬μ΄νŠΈ; 인쇄(μ‚¬μ΄νŠΈ 파일 )'
/private/tmp/ve/lib/python2.7/site.pyc
$ python -c 'μ‚¬μ΄νŠΈ κ°€μ Έμ˜€κΈ°; 인쇄(μ‚¬μ΄νŠΈ 파일 )'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.pyc

We ship our own `./virtualenv_embedded/site.py`

site.py μ—…λ°μ΄νŠΈ(및 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„± 보μž₯)λ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€.

λ‚˜λŠ” 이것이 릴리슀 λΈ”λ‘œμ»€λ‘œ ν‘œμ‹œλ˜μ–΄μ„œλŠ” μ•ˆλœλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. κΈ°λŠ₯κ³Ό ν˜Έν™˜λ˜λŠ” site.py νŒŒμΌμ„ μ§€μ›ν•˜λŠ” 것이 μ’‹κ² μ§€λ§Œ μ΄λŸ¬ν•œ 단점은 μˆ˜λ…„ λ™μ•ˆ κ³„μ†λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

"이 단점은 λͺ‡ λ…„ λ™μ•ˆ 이런 μ‹μ΄μ—ˆμŠ΅λ‹ˆλ‹€." 그리고 μ  μž₯, μ—¬μ „νžˆ μ•„ν”„λ‹€... :(
이 plz, thx μˆ˜μ •μ„ κ³ λ €ν•˜μ‹­μ‹œμ˜€

이것은 였늘 λ‚˜λ₯Ό λ¬Όμ—ˆμŠ΅λ‹ˆλ‹€. 이전 2.6 λ²„μ „μ—λŠ” site.getusersitepackages() 와 같은 ν•­λͺ©μ΄ μ—†κΈ° λ•Œλ¬Έμ— virtualenv $ 에 ν¬ν•¨λœ μ—…λ°μ΄νŠΈλœ site.py λ₯Ό μ–»λŠ” 것이 정말 정말 쒋을 κ²ƒμž…λ‹ˆλ‹€.

그것은 λ‚˜λ₯Ό 물기도 ν–ˆκ³ , 그것은 λ‚˜λ₯Ό 방심케 ν–ˆλ‹€. 이제 λ‹€λ₯Έ 파일이 μ‹œμŠ€ν…œ python(특히 --system-site-packages λ₯Ό μ‚¬μš©ν•  λ•Œ)κ³Ό λ‹€λ₯Έμ§€, 그리고 기닀리고 μžˆλŠ” λ‹€λ₯Έ "버그"κ°€ 무엇인지 κΆκΈˆν•©λ‹ˆλ‹€...

Python 2.7.6κ³Ό ν•¨κ»˜ virtualenv 13.1.2 λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 μ—¬μ „νžˆ β€‹β€‹μœ νš¨ν•˜λ©° λ‚΄κ°€ ν•˜κ³  μžˆλŠ” 일뢀 개발 μž‘μ—…μ— λ°©ν•΄κ°€ 되고 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ λŒ€ν™”ν˜• λ°”μ΄μ˜¬λ¦°μž…λ‹ˆλ‹€.

getsitepackagesλŠ” virtualenv에 μ—†μŠ΅λ‹ˆλ‹€
$ virtualenv --version
13.1.2
$ virtualenv test
New python executable in test/bin/python
Installing setuptools, pip, wheel...done.
$ source test/bin/activate
$ which python
/home/user/test/bin/python
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
False
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>>
getsitepackagesλŠ” μ‹œμŠ€ν…œ Python에 μžˆμŠ΅λ‹ˆλ‹€.
$ deactivate
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
True
>>> site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>>

νŽΈμ§‘: μ™€μš°...... 방금 μ½μ—ˆμŠ΅λ‹ˆλ‹€: https://github.com/pypa/virtualenv/pull/697
이 νŠΉμ • 증상보닀 κ·Όλ³Έ 원인을 ν•΄κ²°ν•˜λŠ” 데 μ‹œκ°„μ„ νˆ¬μžν•˜λŠ” 것이 더 λ‚˜μ„ 것 κ°™μŠ΅λ‹ˆλ‹€. μž¬μž‘μ„±μ΄ μ–΄λ–»κ²Œ λ˜λŠ”μ§€μ— 따라 μž¬μž‘μ„±μ—μ„œ λ…Όμ˜λœ λ³€κ²½ 사항에 μ°¬μ„±ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ°œμƒν•΄μ•Ό ν•˜λŠ” λ³€κ²½ 사항을 기꺼이 기닀릴 κ²ƒμž…λ‹ˆλ‹€.

μ›λž˜ λŒ“κΈ€:
저도 이거 λ”± κ±Έλ ΈμŠ΅λ‹ˆλ‹€.

# Tried with and without --system-site-packages

[username@hostname] ~/dir $ virtualenv --system-site-packages venv
Using base prefix '/usr'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
[username@hostname] ~/dir $ venv/bin/python
Python 3.4.3 (default, Jul 28 2015, 18:20:59) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>> 

site.getsitepackages() site.py μ—…λ°μ΄νŠΈλ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€.

지원 쀑단 경고둜 인해 -Werror와 ν•¨κ»˜ μ‹€ν–‰ν•  경우 가상 ν™˜κ²½μ—μ„œ λ‹€λ₯Έ λ™μž‘μ„ μΌμœΌν‚¬ 수 μžˆλŠ” #555둜 이 문제λ₯Ό ν•΄κ²°ν•˜μ‹­μ‹œμ˜€. toxλŠ” λ‚΄λΆ€μ μœΌλ‘œ μž‘λ™ν•˜κΈ° μœ„ν•΄ 이 νŒ¨ν‚€μ§€μ— μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— μ£Όμœ„μ— λ§Žμ€ 방법을 λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€.

+1 sad_panda와 λ§Žμ€ 눈물

+1 였늘 이 λΉ„νŠΈ, μ½”λ“œλŠ” virtualenv μ™ΈλΆ€μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ λ‚΄λΆ€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

+1 λ°”μ΄νŠΈ, μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? 감사 ν•΄μš”.

+1 rk(jupyter용 원격 컀널)와 λ™μΌν•œ 문제.

+1 λ°”μ΄νŠΈ, virtualenv μ™ΈλΆ€μ—μ„œλŠ” μž‘λ™ν•˜μ§€λ§Œ λ‚΄λΆ€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬λ‘œμ„œλŠ” 졜고의 μ†”λ£¨μ…˜μ΄ ν”„λ‘œμ νŠΈμ—μ„œ site.py (λ˜λŠ” κ·Έ 일뢀)λ₯Ό νŒλ§€ν•˜λŠ” 것일 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

ν•΄κ²° 방법: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" λŠ” λ‚΄ Python μ‚¬μ΄νŠΈ νŒ¨ν‚€μ§€ λ””λ ‰ν† λ¦¬μ˜ μœ„μΉ˜λ₯Ό ​​찾도둝 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

+1

+1 λ°”μ΄νŠΈ, μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? 감사 ν•΄μš”.

Ubuntu 16.04 64λΉ„νŠΈμ—μ„œ virtualenv 15.0.1을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

+1 λ¬Όλ¦°
(CentOS 7.5.1804의 virtualenv 15.1.0)

py3으둜 λ„˜μ–΄κ°„ μ΄ν›„λ‘œ μ €λŠ” virtualenv μ‚¬μš©μ„ μ€‘λ‹¨ν–ˆκ³  파이썬 자체 venv λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. python 3.6 μ΄μƒμ—μ„œ λ―Έλ‹ˆλ©€λ¦¬μŠ€νŠΈ venv λŠ” 단 λͺ‡ 개의 심볼릭 링크둜 κ΅¬μ„±λ©λ‹ˆλ‹€.

$ python3.6 -m venv --without-pip grut
$ tree grut/
grut/
β”œβ”€β”€ bin
β”‚Β Β  β”œβ”€β”€ activate
β”‚Β Β  β”œβ”€β”€ activate.csh
β”‚Β Β  β”œβ”€β”€ activate.fish
β”‚Β Β  β”œβ”€β”€ python -> python3.6
β”‚Β Β  β”œβ”€β”€ python3 -> python3.6
β”‚Β Β  └── python3.6 -> /usr/bin/python3.6
β”œβ”€β”€ include
β”œβ”€β”€ lib
β”‚Β Β  └── python3.6
β”‚Β Β      └── site-packages
β”œβ”€β”€ lib64 -> lib
└── pyvenv.cfg

6 directories, 7 files

λ”°λΌμ„œ 더 이상 virtualenv 및 λͺ¨λ“  단점이 μ—†μŠ΅λ‹ˆλ‹€. HTH λ‹€λ₯Έ μ‚¬λžŒλ“€.

@RemiCardona κ°€λŠ₯ν•œ ν•œ Python 3의 venv λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ λΆˆν–‰νžˆλ„ tox λŠ” μ—¬μ „νžˆ virtualenv λ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ(Python 3을 ν…ŒμŠ€νŠΈν•  λ•Œλ„) 이 λ¬Έμ œμ— λΆ€λ”ͺμ³€μŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•˜κ±°λ‚˜ 지속적인 톡합을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ tox λ₯Ό μ‚¬μš©ν•  λ•Œλ§ˆλ‹€. 😞

이 λ¬Έμ œλŠ” 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ 였래된 κ²ƒμœΌλ‘œ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 이상 ν™œλ™μ΄ μ—†μœΌλ©΄ νμ‡„λ©λ‹ˆλ‹€. 계속 열어두고 μ‹Άλ‹€λ©΄ λŒ“κΈ€μ„ μΆ”κ°€ν•˜μ„Έμš”. κ·€ν•˜μ˜ 기여에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰