μ°λ¦¬λ python 2.7μ λ μ μ μΌλ‘ μ¬μ©νλ©° python 2.7μ΄ μλ λͺ¨λ κ°μ νκ²½μ site.pyκ° python 2.7μ μΆκ°λ λ§μ μλ‘μ΄ κΈ°λ₯μ΄ λΆμ‘±ν py2.6μ site.pyλ₯Ό μ¬μ©νλ€λ μ¬μ€μ μ€λ λ°κ²¬ν κ²μ λλΌμ΄ μΌμ λλ€.
λΉμ μκ² ν¨κ³Όκ° μλ μλ₯Ό λ€μ΄μ£Όμ€ μ μμ΅λκΉ?
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 λ₯Ό μ¬μ©νλ κ²μ μ¬μ ν ββμ ν¨νλ©° λ΄κ° νκ³ μλ μΌλΆ κ°λ° μμ μ λ°©ν΄κ° λκ³ μμ΅λλ€.
λ€μμ λνν λ°μ΄μ¬λ¦°μ λλ€.
$ 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'
>>>
$ 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
λ₯Ό μ¬μ©ν λλ§λ€. π
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ μμΌλ©΄ νμλ©λλ€. κ³μ μ΄μ΄λκ³ μΆλ€λ©΄ λκΈμ μΆκ°νμΈμ. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
κ°μ₯ μ μ©ν λκΈ
ν΄κ²° λ°©λ²:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
λ λ΄ Python μ¬μ΄νΈ ν¨ν€μ§ λλ ν 리μ μμΉλ₯Ό ββμ°Ύλλ‘ κ΄λ¦¬ν©λλ€.