python 3.7.4 64๋นํธ๋ฅผ ์ค์นํ ํ ํด๋์์ ๊ฐ์ ํ๊ฒฝ์ ์์ํ๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฝ 1000๊ฐ์ ํ์ด์ฌ ํ๋ก์ธ์ค๊ฐ ์์๋์๊ณ ๊ฐ์ ํ๊ฒฝ์ด ์์ฑ๋์ง ์์์ต๋๋ค.
์ด์ ์ฒด์ : Windows 10 ํ
Cygwin 64๋นํธ์์ ์คํ๋๋ ์ฝ๋
์คํจํ ์ฝ๋:
mkdir test
cd test
virtualenv venv
pip list
ํจํค์ง ๋ฒ์
์ํ์ฑ 2.2.0
์ฝ๋ก๋ผ๋ 0.4.1
์์ด์ํธ 4.3.9
๊ฒ์ผ๋ฅธ ๊ฐ์ฒด ํ๋ก์ 1.3.1
๋งฅ์นด๋ฒ 0.6.1
ํ 19.1.1
ํ์ผ๋ฆฐํธ 2.3.0
๋กํ 0.14.0
์ค์ ๋๊ตฌ 40.8.0
์ฌ์ฏ 1.12.0
1.3.1 ์ ๋ ฅ
๊ฐ์ ํ๊ฒฝ 16.6.1
๋ฉ 1.11.1
์ค๋ ์ฒ์์ผ๋ก python, pip ๋ฐ virtualenv๋ฅผ ์ค์นํ๋ ค๊ณ ์๋ํ์ง๋ง ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
๋๋ 3 ์ค์ ์ฃผ์์ ๋ฌ์์ ๊ทธ๊ฒ์ ๊ณ ์ณค๋ค.
Python\Python37\Lib\site-packages\virtualenv.py
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ
-p python
virtualenv๋ฅผ ์คํํ ๋
๋ด๊ฐ ์ฃผ์ ์ฒ๋ฆฌํ ์ค์ 783-785์
๋๋ค.
if hasattr(sys, "_base_executable"):
print("hasattr(sys, \"_base_executable\") == yes")
return sys._base_executable
@AndrYast ํ๊ฒฝ์ ํ์ฑํํ ํ ์ฌ์ ํ 3.7.4๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์ด๊ฒ์ ํ์คํ ์ด์ (7/8/19) ๋ฆด๋ฆฌ์ค๋ 3.7.4์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@thingselliotprograms ์, ์คํ ์ค์
๋๋ค.
venv\Scripts\activate
python --version
๋์๊ฒ ์ค๋ค
Python 3.7.4
์ด์ python์ 3.7.4๋ก ์ ๊ทธ๋ ์ด๋ํ ํ pipenv๊ฐ ์ค๋จ๋๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. virtualenv์ ๊ด๋ จ๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ . ํ์ฌ python์ 3.7.3์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ต๋๋ค.
https://github.com/python/cpython/pull/14428 ์ ํญ์ sys._base_executable
์ค์ ํ๊ธฐ ๋๋ฌธ์ Ack virtualenv latest ๊ฐ ๊นจ์ก์ต๋๋ค.
3.7.4์์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ pipenv
ํ๊ณ ์๊ณ [WinError 8] Not enough memory resources are available to process this command
๋ฐ๊ณ ์์ต๋๋ค. virtualenv๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด 3.7.3์์ ์ ์๋ํฉ๋๋ค.
์ ๋ 3.7.4์์ ์ด ์ ํํ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค.
python.exe ํ๋ก์ธ์ค์ ๋กค๋ง ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ๊ฐ์ํค๊ณ virtualenv ์์ฑ์ ๊ถ๊ทน์ ์ผ๋ก ์คํจํฉ๋๋ค.
3.7.2์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ฌ๊ธฐ ์ ์ง ๋ณด์. ์์์ ๋งํ๋ฏ์ด CPython์ ์ผ๋ถ ๋ด๋ถ ๋ณ์์ ๋ํ ๊ณ์ฝ์ด ๋ณ๊ฒฝ๋์์ผ๋ฉฐ ์ด๋ก ์ธํด ์ด์ python 3.7 ๋ฐ 3.8 ๋ชจ๋์ ๋ํด ํ๋ก์ธ์ค ์์ฑ ์ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ด _์ข์_ ์์ด๋์ด์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด ๋น ๋ฅธ ํดํน์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ์ ์์์ต๋๋ค.
# virtualenv.py:783
if hasattr(sys, "_base_executable") and sys.version_info < (3, 7, 4):
return sys._base_executable
๊ทธ ์ค ์์ ์ฃผ์์ผ๋ก ํ๋จํ๋ฉด ์ด์ ๋ฒ์ ์์ ์ฌ๋ฏธ๋ฅผ ๋ณธ ๊ฒ ๊ฐ์ต๋๋ค.
sys._base_executable != sys.executable
์ถ๊ฐ ํ์ธ์ด ํ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์งํ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํจ์น ๋ฆด๋ฆฌ์ค์์ ๊ณ์ ๋ณ๊ฒฝ๋๋ ๊ฒ ๊ฐ๊ณ ํ์ฌ ์งํ ์ค์ธ ์ํฉ์ ๋ฐ๋ผ๊ฐ ์๊ฐ์ด ์์ต๋๋ค(๋ชจ๋ "Windows Store" ๋น๋๋ฅผ ์ง์ํ๋ ์์
๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ด์ฌ).
@zooba ๊ฐ ์ฌ๊ธฐ์ ๋๊ธ์ ๋ฌ๊ฑฐ๋ ์ ์์ ํ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธ์ํ๋์ง ์์ ๋ด๋ถ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๋ฌ๋ ค ์์ง๋ง ํ์ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ์ง์๋๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชป ํ๋ฏ๋ก ์ ์ฉ ์ด ๋ณด์ด์ง ์์ต๋๋ค . Python์ ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ป์ ๋๋ง๋ค ์ ์ฌ์ ์ธ ์์:-(
๊ถ๊ทน์ ์ผ๋ก #1377์ ์๋ง๋ ์ฌ๊ธฐ์์ ์ ์ผํ๊ฒ ์ ๋ขฐํ ์ ์๋ ์๋ฃจ์ ์ผ ๊ฒ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ ์ฒดํฌ๋ฅผ ์ถ๊ฐํ๋ ํ ๊ด์ฐฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Windows๋ฅผ ์คํํ๊ณ virtualenv๋ฅผ ์์ฑํ๋ ค๋ Travis CI ์์ ๋ ์คํจํฉ๋๋ค. Travis CI๋ ์ต๊ทผ์ 3.7.4๋ก ์ด๋ํ์ต๋๋ค. ๐
https://travis-ci.community/t/infinite-loop-of-virtualenv-windows/4139
Travis ๋น๋์์ ์ ์ฉํ ์ ๋ณด:
version: v6.2.0 https://github.com/travis-ci/worker/tree/5e5476e01646095f48eec13196fdb3faf8f5cbf7
instance: travis-ci-onion-1803-containers-1542208204-ad01dca (via amqp)
bash version 4.4.19(2)-release
Chocolatey v0.10.11
python3 v3.7.4 [Approved]
python3 has been installed.
Successfully installed pip-19.1.1
Successfully installed virtualenv-16.6.1
$ virtualenv $HOME/venv
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
...[repeats 763 more times]...
The command "virtualenv $HOME/venv" failed and exited with 1 during .
Your build has been stopped.
MemoryError
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ ์ฒดํฌ๋ฅผ ์ถ๊ฐํ๋ ํ ๊ด์ฐฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด base_executable ๊ฒ์ฌ๊ฐ ์์ ํ๋ ค๊ณ ํ๋ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ์ง ์์ต๋๊น(3.7.4์์)? ๋ถ๋ช ํ ์ด๋ฌํ ๋ฌธ์ ๋ ํจ์ฌ ๋ ์ฌ๊ฐํ๋ฏ๋ก ์ฌ์ ํ ํ ๊ฐ์น๊ฐ ์์ง๋ง ์์ ํ ํด๊ฒฐ์ฑ ์ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ํดํ์ ์ ๋ฐํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น?
๋๋ ์ด๋ค ์ ์ผ๋ก๋ ํ ์คํธํ์ง ์์์ต๋๋ค (๊ทธ๋ฆฌ๊ณ ๋ฏธ์ํ์ง๋ง ์๊ฐ์ด ์์ ๊ฒ์ ๋๋ค).
์ฌ๊ธฐ์ ๊ฒฐ๋ก ์ ๋ฌด์์ ๋๊น? virtualenv์ ๋ํ ์์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ฐ๋ฅํฉ๋๊น?
์, ์์ ์ผ๋ก PRํ๋ ์ฌ๋์ด ์์ผ๋ฉด ๋ฉ๋๋ค ๐
์ธ๊ธํ ํ๊ท์ ๋ํ ํ ์คํธ๊ฐ ์์ต๋๊น?
๋๋ ์ฐ๋ฆฌ๊ฐ ํ ์๊ฐํฉ๋๋ค.
๊ด๋ จ ํ
์คํธ(#1345์ ์ถ๊ฐ๋จ)๋ test_create_environment_from_venv
. ํ์ง๋ง Python 3.7.2, 3.7.3 ๋ฐ 3.7.4 ๋ชจ๋์์ ๋์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์คํํด์ผ ํฉ๋๋ค( ๋ถ) ๋ฒ์ ์ด๋ฉฐ ๋ด๊ฐ ์๋ ํ CI์์ ๋ค๋ฃจ์ง ์์ต๋๋ค.
์ฌ๋๋ค์ ๋น ๋ฅธ ์์ ๋๋ถ์ base_executable
๋ฅผ executable
์ ๋น๊ตํ๋ฉด ๋จ์ํ _base_executable
์์ฑ์ด ์๋์ง ํ์ธํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์กฐ๊ธ ๋ ๋ช
์์ ์
๋๋ค)
์ฒ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ธ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๋ ค๋ฉด ์์คํ ํ์ด์ฌ์ด ํ์ํฉ๋๋ค. venv ๋๋ virtualenv ํจํค์ง๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค.
์ด์ ์ sys._base_executable
๋ ์์คํ
ํ์ด์ฌ์ ์์ง ์์ ๊ฒฝ์ฐ์๋ง ํ์ด์ฌ 3.7+
์ ์ค์ ๋์์ต๋๋ค. ์ด๊ฒ์ ์์ PR๊ณผ ํจ๊ป ํญ์ ์ค์ ๋๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค(๋น์์คํ
Python์ด sys.executable
๊ณผ ๊ฐ์ ๊ฒฝ์ฐ). ๋ณ๊ฒฝ ์ฌํญ์ CPython์ฉ ๋ด์ฅ ์ฝ๋(์์คํ
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ฌ์ดํธ ํจํค์ง ๊ฒ์์ ์ผ๋ถ์์)๋ฅผ ๋จ์ํํ๋ฏ๋ก ๋ณ๊ฒฝ ์ฌํญ์ด์ง๋ง ๊ณ์ฝ ๋ณ๊ฒฝ ์ฌํญ์
๋๋ค. ๊ทธ๊ฒ์ด ๊ฐ์ธ ์์ฑ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊นจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์์ผ๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ค๋ฅธ ๊ณณ์์ ์ด ์ ๋ณด๋ฅผ ์ป์ ์ ์์์ผ๋ฏ๋ก ์ด ๊ฐ์ธ ํ๋์ ์์กดํ์ต๋๋ค.
ํ์ด์ฌ 3.7.4
๋์ผํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋์์ด ๋ ์ ์๋๋ก ์ถ๋ ฅ์ ๊ฒ์ํฉ๋๋ค.
Requirement already up-to-date: virtualenv in c:\users\tester\appdata\local\programs\python\python37\lib\site-packages (16.6.1)
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
...
(Repeated 350 times in total)
Traceback (most recent call last):
File "c:\users\tester\appdata\local\programs\python\python37\lib\site-packages\virtualenv.py", line 2611, in <module>
main()
File "c:\users\tester\appdata\local\programs\python\python37\lib\site-packages\virtualenv.py", line 814, in main
sub_process_call = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
File "c:\users\tester\appdata\local\programs\python\python37\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "c:\users\tester\appdata\local\programs\python\python37\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
OSError: [WinError 8] Not enough memory resources are available to process this command
์ฌ๊ธฐ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๋ ์ฌ๋๋ค ์ค ์ผ๋ถ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ ๋ค๋ฅธ ์์์ด ๋ฐ์ํ์ง ์๋์ง ํ์ธํ ์ ์์ต๋๊น?
Travis CI์ Python 3.7.4์์ ์๋ํฉ๋๋ค! ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ณด์ด์ง ์์ต๋๋ค.
์ด๊ฒ์ ํ ์คํธ์ ์ฌ์ฉํ Travis ๊ตฌ์ฑ์ ๋๋ค(๊ด๋ จ ๋ถ๋ถ).
- stage: test
os: windows
language: shell
env: PATH=/c/Python37:/c/Python37/Scripts:$PATH
before_install:
- choco install python
# python -m pip install virtualenv
- pip install git+https://github.com/pypa/virtualenv
- virtualenv $HOME/venv
- source $HOME/venv/Scripts/activate
๊ฒฐ๊ณผ(๊ด๋ จ ๋ถ๋ถ):
Progress: Downloading python 3.7.4... 100%
python3 v3.7.4 [Approved]
python3 package files install completed. Performing other installation steps.
Installing 64-bit python3...
python3 has been installed.
Installed to: 'C:\Python37'
...
16.31s$ pip install git+https://github.com/pypa/virtualenv
Collecting git+https://github.com/pypa/virtualenv
Cloning https://github.com/pypa/virtualenv to c:\users\travis\appdata\local\temp\pip-req-build-ceb1gi36
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Building wheels for collected packages: virtualenv
Building wheel for virtualenv (PEP 517): started
Building wheel for virtualenv (PEP 517): finished with status 'done'
Stored in directory: C:\Users\travis\AppData\Local\Temp\pip-ephem-wheel-cache-kx8oezso\wheels\8d\58\76\749812a30b0b5c5cdc1b327e343711660ee5ebf51cf56d2df5
Successfully built virtualenv
Installing collected packages: virtualenv
Successfully installed virtualenv-16.6.1
46.51s$ virtualenv $HOME/venv
Using base prefix 'c:\\python37'
New python executable in C:\Users\travis\venv\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
0.16s$ source $HOME/venv/Scripts/activate
Travis CI์ Python 3.7.4์์ ์๋ํฉ๋๋ค! ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ณด์ด์ง ์์ต๋๋ค.
ํ๋ฅญํฉ๋๋ค, ํ์ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
os: windows
Travis๊ฐ Windows ํ๊ฒฝ์ ์ ๊ณตํ๋ค๋ ์ฌ์ค์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ํฅ๋ฏธ๋กญ์ต๋๋ค :-)
@pfmoore ๊ทธ๋ค์ Windows๊ฐ "์กฐ๊ธฐ ์ก์ธ์ค"์ด๋ฉฐ ๋ฌธ์ ๊ฐ ์์์ ๊ฐ์กฐํฉ๋๋ค(๋น๋ฐ์ ์ฌ์ฉํ ์ ์์).
์, Windows ์ง์์ #travisAlums ์ผ์ด ์ผ์ด๋๊ธฐ ์ง์ ์ ์ถ์๋์์ต๋๋ค. IIRC(์๋ก์ด ๋ชจํ์ฌ๋ Travis์ ํ์ ํฌ๊ฒ ์ถ์ํ์ต๋๋ค)
์ด ์ฝ๋(virtualenv.py ํ์ผ์ ์์)๊ฐ ์์ต๋๋ค.
์์ฐ์ง:
if hasattr(sys, "_base_executable"):
๋ค์์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
hasattr(sys, "_base_executable")์ด๊ณ os.environ.get("VIRTUALENV_INTERPRETER_RUNNING")์ด ์๋ ๊ฒฝ์ฐ:
์ด๋ ๊ฒํ๋ฉด ๋ฃจํ๊ฐ ์์ ๋ฉ๋๋ค.
์์ ์ฌํญ์ https://pypi.org/project/virtualenv/16.6.2/ ๋ฅผ ํตํด ๋ฆด๋ฆฌ์ค๋์ด์ผ ํฉ๋๋ค.
๋ฐฉ๊ธ ํ ์คํธํ๊ณ ์ค์ ๋ก ์์ ๋์์ต๋๋ค. ๋น ๋ฅด๊ณ ์ข์ ๋ต๋ณ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ ์ ์ง ๋ณด์. ์์์ ๋งํ๋ฏ์ด CPython์ ์ผ๋ถ ๋ด๋ถ ๋ณ์์ ๋ํ ๊ณ์ฝ์ด ๋ณ๊ฒฝ๋์์ผ๋ฉฐ ์ด๋ก ์ธํด ์ด์ python 3.7 ๋ฐ 3.8 ๋ชจ๋์ ๋ํด ํ๋ก์ธ์ค ์์ฑ ์ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํฉ๋๋ค.