<p>virtualenv --always-copy๊ฐ€ CentOS์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(lib64 ๋ฌธ์ œ?)</p>

์— ๋งŒ๋“  2019๋…„ 03์›” 05์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/virtualenv

/lib64 ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋žซํผ์—์„œ --always-copy ๋กœ virtualenv๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

CentOS 7.6์—์„œ๋Š” ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€(python 2.7.5 , virtualenv 15.1.0 )์™€ SCL์„ ํ†ตํ•ด ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชจ๋‘์—์„œ ๋™์ผํ•œ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๊ด€๋ จ๋  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ํ‹ฐ์ผ“(#985, #1192, #3477, https://github.com/FPGAwars/icestudio/issues/244)๊ณผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •๋˜๋Š” ๋ณ‘ํ•ฉ๋œ pull ์š”์ฒญ(#1189)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ž˜๋ชป๋œ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

SCL์„ ์‚ฌ์šฉํ•œ ์˜ˆ(Python 3.6.3 , virtualenv๋Š” ์ˆ˜๋™์œผ๋กœ 16.4.3 ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋จ).
์ฒซ ๋ฒˆ์งธ ์˜ค๋ฅ˜๋Š” virtualenv_support/pip-19.0.3-py2.py3-none-any.whl ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  File "<scl_base>/lib64/python3.6/socket.py", line 49, in <module>
    import _socket
ModuleNotFoundError: No module named '_socket'

์ปจํ…์ŠคํŠธ์—์„œ ๋ณด๋ ค๋ฉด ๋กœ๊ทธ๋ฅผ ์™„๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

$ <scl_base>/bin/virtualenv --python <scl_base>/bin/python --always-copy --verbose TEST
Running virtualenv with interpreter <scl_base>/bin/python
Using base prefix '<scl_base>'
Creating <somedir>/TEST/lib/python3.6
Copying to <somedir>/TEST/lib64
Symlinking Python bootstrap modules
  Copying to <somedir>/TEST/lib/python3.6/config-3.6m-x86_64-linux-gnu
  Copying to <somedir>/TEST/lib/python3.6/lib-dynload
  Copying to <somedir>/TEST/lib64/python3.6/os.py
  Ignoring built-in bootstrap module: posix
  Copying to <somedir>/TEST/lib64/python3.6/posixpath.py
  Cannot import bootstrap module: nt
  Copying to <somedir>/TEST/lib64/python3.6/ntpath.py
  Copying to <somedir>/TEST/lib64/python3.6/genericpath.py
  Copying to <somedir>/TEST/lib64/python3.6/fnmatch.py
  Copying to <somedir>/TEST/lib64/python3.6/locale.py
  Copying to <somedir>/TEST/lib64/python3.6/encodings
  Copying to <somedir>/TEST/lib64/python3.6/codecs.py
  Copying to <somedir>/TEST/lib64/python3.6/stat.py
  Cannot import bootstrap module: UserDict
  Creating parent directories for <somedir>/TEST/lib64/python3.6/lib-dynload
  Copying to <somedir>/TEST/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so
  Cannot import bootstrap module: copy_reg
  Copying to <somedir>/TEST/lib64/python3.6/types.py
  Copying to <somedir>/TEST/lib64/python3.6/re.py
  Cannot import bootstrap module: sre
  Copying to <somedir>/TEST/lib64/python3.6/sre_parse.py
  Copying to <somedir>/TEST/lib64/python3.6/sre_constants.py
  Copying to <somedir>/TEST/lib64/python3.6/sre_compile.py
  Copying to <somedir>/TEST/lib64/python3.6/lib-dynload/zlib.cpython-36m-x86_64-linux-gnu.so
  Cannot import bootstrap module: _abcoll
  Copying to <somedir>/TEST/lib64/python3.6/warnings.py
  Copying to <somedir>/TEST/lib64/python3.6/linecache.py
  Copying to <somedir>/TEST/lib64/python3.6/abc.py
  Copying to <somedir>/TEST/lib64/python3.6/io.py
  Copying to <somedir>/TEST/lib64/python3.6/_weakrefset.py
  Copying to <somedir>/TEST/lib64/python3.6/copyreg.py
  Copying to <somedir>/TEST/lib64/python3.6/tempfile.py
  Copying to <somedir>/TEST/lib64/python3.6/random.py
  Copying to <somedir>/TEST/lib64/python3.6/__future__.py
  Copying to <somedir>/TEST/lib64/python3.6/collections
  Copying to <somedir>/TEST/lib64/python3.6/keyword.py
  Copying to <somedir>/TEST/lib64/python3.6/tarfile.py
  Copying to <somedir>/TEST/lib64/python3.6/shutil.py
  Copying to <somedir>/TEST/lib64/python3.6/struct.py
  Copying to <somedir>/TEST/lib64/python3.6/copy.py
  Copying to <somedir>/TEST/lib64/python3.6/tokenize.py
  Copying to <somedir>/TEST/lib64/python3.6/token.py
  Copying to <somedir>/TEST/lib64/python3.6/functools.py
  Copying to <somedir>/TEST/lib64/python3.6/heapq.py
  Copying to <somedir>/TEST/lib64/python3.6/bisect.py
  Copying to <somedir>/TEST/lib64/python3.6/weakref.py
  Copying to <somedir>/TEST/lib64/python3.6/reprlib.py
  Copying to <somedir>/TEST/lib64/python3.6/base64.py
  Copying to <somedir>/TEST/lib64/python3.6/_dummy_thread.py
  Copying to <somedir>/TEST/lib64/python3.6/hashlib.py
  Copying to <somedir>/TEST/lib64/python3.6/hmac.py
  Copying to <somedir>/TEST/lib64/python3.6/imp.py
  Copying to <somedir>/TEST/lib64/python3.6/importlib
  Copying to <somedir>/TEST/lib64/python3.6/rlcompleter.py
  Copying to <somedir>/TEST/lib64/python3.6/operator.py
  Copying to <somedir>/TEST/lib64/python3.6/_collections_abc.py
  Copying to <somedir>/TEST/lib64/python3.6/_bootlocale.py
  Copying to <somedir>/TEST/lib64/python3.6/enum.py
  No LICENSE.txt / LICENSE found in source
Creating <somedir>/TEST/lib/python3.6/site-packages
Writing <somedir>/TEST/lib64/python3.6/site.py
Writing <somedir>/TEST/lib64/python3.6/orig-prefix.txt
Writing <somedir>/TEST/lib64/python3.6/no-global-site-packages.txt
Creating <somedir>/TEST/bin
New python executable in <somedir>/TEST/bin/python
Changed mode of <somedir>/TEST/bin/python to 0o775
Copying to <somedir>/TEST/bin/python3
Copying to <somedir>/TEST/bin/python3.6
Testing executable with <somedir>/TEST/bin/python -c "import sys;out=sys.stdout;getattr(out, "buffer", out).write(sys.prefix.encode("utf-8"))"
Got sys.prefix result: '<somedir>/TEST'
Creating <somedir>/TEST/lib64/python3.6/distutils
Writing <somedir>/TEST/lib64/python3.6/distutils/__init__.py
Writing <somedir>/TEST/lib64/python3.6/distutils/distutils.cfg
Traceback (most recent call last):
  File "<scl_base>/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "<scl_base>/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv_support/pip-19.0.3-py2.py3-none-any.whl/pip/__main__.py", line 16, in <module>
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv_support/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/__init__.py", line 19, in <module>
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv_support/pip-19.0.3-py2.py3-none-any.whl/pip/_vendor/urllib3/__init__.py", line 8, in <module>
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv_support/pip-19.0.3-py2.py3-none-any.whl/pip/_vendor/urllib3/connectionpool.py", line 7, in <module>
  File "<scl_base>/lib64/python3.6/socket.py", line 49, in <module>
    import _socket
ModuleNotFoundError: No module named '_socket'
Command <somedir>/TEST/bin/python -m pip config list had error code 1
Installing setuptools, pip, wheel...

  Traceback (most recent call last):
    File "<stdin>", line 4, in <module>
    File "<somedir>/TEST/lib64/python3.6/tempfile.py", line 45, in <module>
      from random import Random as _Random
    File "<somedir>/TEST/lib64/python3.6/random.py", line 42, in <module>
      from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
  ModuleNotFoundError: No module named 'math'
  Complete output from command <somedir>/TEST/bin/python - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "<somedir>/TEST/lib64/python3.6/tempfile.py", line 45, in <module>
    from random import Random as _Random
  File "<somedir>/TEST/lib64/python3.6/random.py", line 42, in <module>
    from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ModuleNotFoundError: No module named 'math'
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 2567, in <module>
    main()
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 793, in main
    symlink=options.symlink,
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 1088, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 935, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 1025, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "<scl_base>/usr/lib/python3.6/site-packages/virtualenv.py", line 886, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command <somedir>/TEST/bin/python - setuptools pip wheel failed with error code 1

๋‚˜๋Š” ์šด์ด ์—†์ด ์ •๋ง ๋งŽ์€ ์กฐํ•ฉ(๋งŽ์€ ๋ฒ„์ „, PATH ๋ฐ PYTHONPATH ์‚ฌ์šฉ)์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

venv pip์—๋Š” ๋‹ค์Œ์ด ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

!"/mnt/c/Users/Artem Russakovskii/Dropbox/workspace/SNIP.test/SNIP/env-linux/bin/python3"

์ด๊ฒƒ์€ ๋‹น์‹ ์ด ๋ฐœ๊ฒฌํ•œ ๋ชป์ƒ๊ธด ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ์™ธ๊ด€์ƒ ์ผ๋ถ€ bash ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ˆ„๋ฝ๋œ ๋”ฐ์˜ดํ‘œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ๊ฐ„๊ณผ๋˜๋Š” ๋นˆ๋„๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌผ๊ฑด์€ ๋‚˜์—๊ฒŒ ๊ฐ€๋ ค์›€์ฆ์„ ๊ธ๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด ์ข‹์€ ๊ฒƒ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  12 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฒ„๊ทธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๋ฏธ๋ž˜ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ python3 ์— ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ œ๋ฅผ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค.

virtualenv --always-copy

~์™€ ํ•จ๊ป˜

python -m venv --copies

์ด๊ฒƒ์€ CentOS 7.x ( ModuleNotFoundError: No module named '_socket' ๋ฐ ModuleNotFoundError: No module named 'math' )์—์„œ ์ž‘๋™ํ•˜๋ฉฐ ๋ณธ์งˆ์ ์œผ๋กœ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์„ ํƒ์ด์—ˆ๋˜ virtualenv์—์„œ ๋ฉ€์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ต์…˜ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ๋‚˜์š”?
IMO, (์˜๋ฏธ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ตœ์†Œํ•œ) (๊ธฐ์กด) --always-copy long ์˜ต์…˜์€ (new) --copies ์˜ต์…˜์˜ ๋ณ„์นญ์œผ๋กœ ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. optparse ์˜ต์…˜์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐœ๊ฒฌ๋œ ์ฒซ ๋ฒˆ์งธ ๊ธด ์˜ต์…˜ ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ dest ๋Œ€ํ•ด ์ทจํ•ด์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @tobiasherp ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ์˜ต์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. --always-copy ๋Š” virtualenv ์˜ต์…˜์ด๊ณ  --copies ๋Š” python -m venv ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์€ virtualenv๋ฅผ ์™„์ „ํžˆ ๋ฒ„๋ฆฌ๊ณ  python3๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์•„๋ฌด ๊ฒƒ๋„ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” -m venv ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ์ œ ๊ฒฝ์šฐ์—๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/tmp/tmp_6oib3xo/venv/lib64/python3.7/tempfile.py", line 45, in <module>
    from random import Random as _Random
  File "/tmp/tmp_6oib3xo/venv/lib64/python3.7/random.py", line 42, in <module>
    from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ModuleNotFoundError: No module named 'math'

tests/test_virtualenv.py::test_always_copy_option ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ

OpenSUSE 15.0 ๋ฐ 15.1์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

virtualenv --always-copy temp
Using base prefix '/usr'
New python executable in /srv/www/htdocs/dev.SNIP.com/apk-downloader/temp/bin/python3
Also creating executable in /srv/www/htdocs/dev.SNIP.com/apk-downloader/temp/bin/python
Command /srv/www/htdocs/dev....der/temp/bin/python3 -m pip config list had error code 1
Installing setuptools, pip, wheel...

  Complete output from command /srv/www/htdocs/dev....der/temp/bin/python3 - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/srv/www/htdocs/dev.SNIP.com/apk-downloader/temp/lib64/python3.6/tempfile.py", line 45, in <module>
    from random import Random as _Random
  File "/srv/www/htdocs/dev.SNIP.com/apk-downloader/temp/lib64/python3.6/random.py", line 42, in <module>
    from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ModuleNotFoundError: No module named 'math'
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 11, in <module>
    load_entry_point('virtualenv==16.7.5', 'console_scripts', 'virtualenv')()
  File "/usr/lib/python3.6/site-packages/virtualenv.py", line 870, in main
    symlink=options.symlink,
  File "/usr/lib/python3.6/site-packages/virtualenv.py", line 1173, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "/usr/lib/python3.6/site-packages/virtualenv.py", line 1019, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "/usr/lib/python3.6/site-packages/virtualenv.py", line 1110, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "/usr/lib/python3.6/site-packages/virtualenv.py", line 963, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command /srv/www/htdocs/dev....der/temp/bin/python3 - setuptools pip wheel failed with error code 1

@gaborbernat ์—ฌ๊ธฐ์— ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? --always-copy ์—†์œผ๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

venv ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ --copies ๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์™œ์š”?

python3 -m venv --copies temp
SNIP<strong i="8">@pylon</strong>:/srv/www/htdocs/dev.SNIP.com/apk-downloader> l temp
total 24
drwxr-xr-x 5 SNIP users 4096 Oct 30 14:09 ./
drwxr-xr-x 7 SNIP users 4096 Oct 30 14:09 ../
drwxr-xr-x 2 SNIP users 4096 Oct 30 14:09 bin/
drwxr-xr-x 2 SNIP users 4096 Oct 30 14:09 include/
drwxr-xr-x 3 SNIP users 4096 Oct 30 14:09 lib/
lrwxrwxrwx 1 SNIP users    3 Oct 30 14:09 lib64 -> lib/
-rw-r--r-- 1 SNIP users   69 Oct 30 14:09 pyvenv.cfg

@archon810 , /lib64 , with python -m venv --copies ๋Š” ์—ฌ์ „ํžˆ symlink์ด์ง€๋งŒ ์šด ์ข‹๊ฒŒ๋„ ์œ ์ผํ•˜๊ฒŒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. --copies ์—†์ด ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด์„ธ์š”. /lib/pyhon3.6/site-packages : ๋งŽ์€ ํŒŒ์ผ์ด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์˜ ํ•„์š”์— ์ถฉ๋ถ„ํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ virtualenv์—์„œ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์‹ค์ˆ˜๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ ๊ถŒํ•œ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ /lib64๋Š” virtualenv ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋‚ด์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์‚ฌํ•ญ: python3์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ venv ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ด์จŒ๋“  virtualenv ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

Windows์˜ WSL ๋‚ด, Dropbox ํด๋”์— Python ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ Dropbox๊ฐ€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ์ธํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์„ธํŠธ์ด๋ฉฐ, ์ด ์ˆ˜ํ•™ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด virtualenv๊ฐ€ ๊ฑฐ์˜ ๊ฑฐ๊ธฐ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ง์€, venv์— rm ๋ฐ cp -R์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ๊ฐ€๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์ „ํ˜€ ์—†๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

python3 -m venv --copies env-linux && rm env-linux/lib64 && cp -R env-linux/lib env-linux/lib64

Ughhh, venv ๋Š” ๊ณต๋ฐฑ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

virtualenv pip์—๋Š” ๋‹ค์Œ์ด ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

#!/bin/sh
'''exec' "/mnt/c/Users/Artem Russakovskii/Dropbox/workspace/SNIP.test/SNIP/env-linux/bin/python3" "$0" "$@"
' '''

venv pip์—๋Š” ๋‹ค์Œ์ด ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

#!"/mnt/c/Users/Artem Russakovskii/Dropbox/workspace/SNIP.test/SNIP/env-linux/bin/python3"
bash: env-linux.new/bin/pip3: "/mnt/c/Users/Artem: bad interpreter: No such file or directory

์ด math ๋ฌธ์ œ๊ฐ€ ์ตœ์‹  16.7.7 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์กด์žฌํ•จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

venv pip์—๋Š” ๋‹ค์Œ์ด ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

!"/mnt/c/Users/Artem Russakovskii/Dropbox/workspace/SNIP.test/SNIP/env-linux/bin/python3"

์ด๊ฒƒ์€ ๋‹น์‹ ์ด ๋ฐœ๊ฒฌํ•œ ๋ชป์ƒ๊ธด ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ์™ธ๊ด€์ƒ ์ผ๋ถ€ bash ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ˆ„๋ฝ๋œ ๋”ฐ์˜ดํ‘œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ๊ฐ„๊ณผ๋˜๋Š” ๋นˆ๋„๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌผ๊ฑด์€ ๋‚˜์—๊ฒŒ ๊ฐ€๋ ค์›€์ฆ์„ ๊ธ๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด ์ข‹์€ ๊ฒƒ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/pypa/virtualenv/pull/1500 ์€ ์ง€๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰