ããã«ã¡ã¯ãHabrïŒ
ãã®èšäºã§ã¯ã
VS Codeãšãã£ã¿ãŒã§æ°åã¯ãªãã¯ããã ãã§ãPythonã¹ã¯ãªãããéçºããéé¢ãããç°å¢ã§å®è¡ããããã®éçºç°å¢ã®ã»ããã¢ãããå
±æããããšæããŸãã
éé¢ãããç°å¢ãšããŠãUbuntu 17.10 OSãå®è¡ãã
LXCããŒã¹ã®ã³ã³ãããŒã®åææ§æãšäœæãæ€èšãããŸãã ãªãDockerã§ã¯ãããŸãããïŒ ããã€ãã®è°è«ãããããšã¯ãçããã®ãé£ããã§ãã éšåçã«ãOSä»®æ³åã®æŠå¿µã¯ããã»ã¹ä»®æ³åããã粟ç¥çã«äž»èŠ³çã«è¿ãã§ãããããã§èª¬æããååã¯ãä¿®æ£ãå ããŠãDockerã³ã³ãããŒã§ã³ãŒããå®è¡ããã®ã«é©ããŠããŸãã
ããªãã¯äœãåŸãŸããïŒ
- ã³ã³ããå
ã§ã¯ã³ã¯ãªãã¯ã§Pythonã¹ã¯ãªãããå®è¡ããæ¹æ³ãšãVS Codeããã®ãªã¢ãŒããããã°ãåŠã¶
- LXDãã€ã³ã¹ããŒã«ãããããã¯ãŒã¯ãæ§æããæåã®ã³ã³ãããŒãéå§ããæ¹æ³ãåŠã¶
- VS CodeãœãŒã¹ã³ãŒããšãã£ã¿ãŒã®ã€ã³ã¹ããŒã«ãšæ§æã確èªããŠãã ãããVSCodeãœãŒã¹ã³ãŒããšãã£ã¿ãŒã¯ãå¿«é©ã«ã³ãŒããèšè¿°ããŠãããã°ã§ããæ¡åŒµæ©èœã®ã»ããã§ãã
ããã«ãªããã®ã¯äœã§ããïŒ
- LXC / LXDã®å®å
šãªã¬ãã¥ãŒã¯ãããŸãããLinuxã³ã³ããã«é¢ããè¿œå æ
å ±ãèªåã§èŠã€ããå¿
èŠããããŸãã
- éçºè
ã®ãã¹ãã§ä»®æ³ç°å¢ãäœæããããã®python virtualenvã¢ãžã¥ãŒã«ã¯ãã³ã³ãããŒã®ä»£æ¿ãšã¯èŠãªãããŸããã
- DockerãšLXDã®ç²Ÿç¥ã®æ¯èŒã¯ãããŸãããçµéšã«åºã¥ããŠèªåã§çµè«ãå°ããŸãã
å
容ïŒ
ããã¯ãšã³ããªããžããªã®éžæ
LXDãã€ã³ã¹ããŒã«ããåã«ã䜿çšããã³ã³ããã®ããã¯ãšã³ãã¹ãã¬ãŒãžã®ã¿ã€ãã決å®ããå¿
èŠããããŸãã åŸã§å€æŽããããšã¯ã§ããŸããã ããã€ãã®ãªãã·ã§ã³ãå©çšå¯èœã§ãïŒZFSãbtrfsãLVMããŸãã¯ãã¹ããã¡ã€ã«ã·ã¹ãã ã æ¯èŒã®ããã«ãå
¬åŒããã¥ã¡ã³ãã«
æ¯èŒè¡šããããŸãã å°æ¥ãã³ã³ããã®
COW ïŒã³ããŒãªã³ã©ã€ãïŒã¹ãããã·ã§ãããç°¡åã«äœæã§ããZFSãéžæããããšããå§ãããŸãã ZFSãŠãŒãã£ãªãã£ããã±ãŒãžãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ããŸãã
$ sudo apt install zfsutils-linux
LXDããã±ãŒãžãã€ã³ã¹ããŒã«ãã
åé¡ã¯ãããŸãããããã±ãŒãžã¯ã·ã¹ãã ã®æšæºé
ä¿¡ã«å«ãŸããŠãããããã³ã³ãœãŒã«ã§ã³ãã³ããå®è¡ããŸãã
$ sudo apt install lxd
LXDãã€ã³ã¹ããŒã«ãããšãçŸåšã®ãŠãŒã¶ãŒã
lxdã·ã¹ãã ã°ã«ãŒãã«è¿œå ãããŸãããã·ã¹ãã ã§å¿
èŠãªç¹æš©ã䜿çšããŠæ§æãç¶è¡ããã«ã¯
ããŠãŒã¶ãŒã»ãã·ã§ã³ãåã¢ã¯ãã£ãåããå¿
èŠããã
ãŸã ã ãã°ã¢ãŠãããŠDesktop Menegerã®ã»ãã·ã§ã³ãåå
¥åããããå®å
šã«åèµ·åããŠãã ããã idã³ãã³ãã䜿çšããŠãçŸåšã®ãŠãŒã¶ãŒã»ãã·ã§ã³ãlxdã°ã«ãŒãã«ãããã©ããã確èªã§ããŸãã
$ id uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),129(lxd)
lxdã°ã«ãŒãã衚瀺ãããŠããã°ããã¹ãŠåé¡ãããŸãããç¶è¡ã§ããŸãã
LXDãåæåãã
LXDã®åæåã¯ã
lxdã°ã«ãŒãã®ã¡ã³ããŒã§ããçŸåšã®ãŠãŒã¶ãŒã«ä»£ãã£ãŠã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ãããŸãã ã³ãã³ããå®è¡ãã以äžã®æ瀺ãšã³ã¡ã³ãã«åŸã£ãŠãã ããïŒ
$ lxd init
LXCãããã¯ãŒã¯æ§æ
ããã§ãããã¯ãŒã¯ãèšå®ãããã³ã³ããã®äœæã«é²ããšãã³ã³ãããäœæããããšãã³ã³ãããã©ã®ãããã¯ãŒã¯ã«ãæ¥ç¶ãããŠããªããšããèŠåã衚瀺ãããŸãã ããã¯ãšã©ãŒã§ã¯ãªããåã«ã€ã³ã¿ãŒãã§ã€ã¹ãä»ãããããã¯ãŒã¯ã¢ã¯ã»ã¹ããããŸããã æåã«ãå¿
èŠãªæ°ã®ã³ã³ãããäœæãã
lxc network attachã³ãã³ãã䜿çšããŠãããã¯ãŒã¯ãæ§æããã³ã³ãããã³ã³ããã«æ¥ç¶ã§ããŸãã 次ã«ãæ§ç¯ãããããã¯ãŒã¯ã®ã¿ã€ãã決å®ããå¿
èŠããããŸãã LXCãããã¯ãŒã¯ã®æ§ç¯ã«ã¯
ããã€ãã®ãªãã·ã§ã³ããããŸããã
ããªããžãªãã·ã§ã³ïŒãã¹ããšã³ã³ããéã®åçŽãªãœãããŠã§ã¢ã¹ã€ããïŒãéžæããããã«åºã¥ããŠãããã¯ãŒã¯ãæ§ç¯ããŸãã
ãããã¯ãŒã¯ããªããžãäœæããå Žåãååãæå®ããåŸããã«ããããã£ãèšå®ããããIPv4ããã³IPv6ãµãããããã©ã³ãã ã«éžæããèªåæ§æã«äŸåã§ããŸãã ããã©ã«ãã§ã¯ããã©ã¡ãŒã¿ãŒã¯
ipv4.nat = falseã§ãããäœããã®çç±ã§ãã³ã³ãããŒããã®ééãã©ãã£ãã¯ã®ãã±ããã¯ããã¹ãã«ãŒãã«ã§IP転éãæ瀺çã«æå¹ã«ããŠãããã¹ããè¶ããŠä»ã®ããŒã«ã«ãããã¯ãŒã¯ã»ã°ã¡ã³ãã«ã«ãŒãã£ã³ã°ãããŸããã ã©ãããLXDã®NATã¯ãããŒã«ã«ãããã¯ãŒã¯ã»ã°ã¡ã³ãããã°ããŒãã«ãžã®ã¢ãã¬ã¹ã®ãã©ã³ã¹ã¬ãŒã¿ãŒä»¥äžã®ãã®ã§ãããã®ãªãã·ã§ã³ãã¢ã¯ãã£ãã«ãããšããã¹ãã®IP転éãã¢ã¯ãã£ãã«ãªããããæ瀺çã«æå¹ã«ããŸãã
$ lxc network create lxdbr0 ipv6.address=none ipv4.address=10.0.3.1/24 ipv4.nat=true Network lxdbr0 created $ lxc network list +--------+----------+---------+-------------+---------+ | NAME | TYPE | MANAGED | DESCRIPTION | USED BY | +--------+----------+---------+-------------+---------+ | ens33 | physical | NO | | 0 | +--------+----------+---------+-------------+---------+ | lxdbr0 | bridge | YES | | 0 | +--------+----------+---------+-------------+---------+
ã³ã³ãããŒæ§æãããã¡ã€ã«ã®äœæ
ã³ã³ããã®æ§æã¯ãæ¡ä»¶ä»ãã§ã°ããŒãã«ãšããŒã«ã«ã®2ã€ã®ã¬ãã«ã«åããããŸãã ã°ããŒãã«æ§æã¯ãç¹å®ã®ã³ã³ãããŒãŸãã¯ã³ã³ãããŒã®ã°ã«ãŒãã«æ¥ç¶ãããŠããæ§æãããã¡ã€ã«ã§æå®ãããããŒã«ã«æ§æã¯ç¹å®ã®ã³ã³ãããŒã«ã®ã¿é©çšãããŸãã ã€ãŸãããããã¡ã€ã«å
ã®ãã¹ãŠã®èšå®ãã³ã³ããã«ç¶æ¿ãããããŒã«ã«èšå®ããããã¡ã€ã«ãããåªå
ãããŸãã 1ã€ã®ã³ã³ããã«è€æ°ã®ãããã¡ã€ã«ãæ·»ä»ã§ããŸãã
LXDãããã¡ã€ã«ãäœæããŠãæ°ããäœæãããã³ã³ããããã¹ãäžã®
lxdbr0ã¹ã€ããïŒãããã¯ãŒã¯ããªããžïŒã«ãªã³ã¯ãããã¿ã€ã
nicã®ã€ã³ã¿ãŒãã§ãŒã¹ãæã€ããã«ããŸãã
$ lxc profile copy default network0 $ lxc profile device add network0 eth0 nic parent=lxdbr0 nictype=bridged
ã³ã³ããäœæ
ããšãã°ãã³ã³ãããäœæããŠ
pytestãšåŒã¶ãšããã®ååã§ãã¹ãããã¢ã¯ã»ã¹ã§ããŸãã
ubuntuãªããžããªããã€ã¡ãŒãžãããŠã³ããŒããã
èµ·åã³ãã³ããå®è¡ããŸã
ïŒããŒãžã§ã³
17.10ããã³
amd64ã¢ãŒããã¯ãã£ãšããã®ã€ã¡ãŒãžããã³ã³ãããŒãäœæããŸãã ããã«ããªãã·ã§ã³ã¯ããã®ã³ã³ãããŒã
network0ãããã¡ã€ã«ããæ§æããå¿
èŠãããããšã瀺ããŸãã
$ lxc launch ubuntu:17.10/amd64 --profile network0 pytest
次ã«ããããã¯ãŒã¯ããã€ã¡ãŒãžãããŠã³ããŒãããŸãã å°ãåŸ
ã£ãŠãå°ãåŸã§ã·ã¹ãã ã§äœ¿çšå¯èœãªã³ã³ãããšãã®ã¹ããŒã¿ã¹ã確èªã§ããŸãã
$ lxc list +--------+---------+------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +--------+---------+------------------+------+------------+-----------+ | pytest | RUNNING | 10.0.3.13 (eth0) | | PERSISTENT | 0 | +--------+---------+------------------+------+------------+-----------+
ã³ã³ããã«ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãã
ããã§ãå¿
èŠãªãœãããŠã§ã¢ãã³ã³ããã«ã€ã³ã¹ããŒã«ããŸãã ã·ã¹ãã ãæŽæ°ããã³ã³ããå
ã§ããã±ãŒãžãããŒãžã£ãå®è¡ããŸãã
$ lxc exec pytest -- /bin/bash -c 'apt update && apt upgrade -y'
次ã«ã
pipããã±ãŒãžãããŒãžã£ãŒïŒPythonããã±ãŒãžã€ã³ã¹ããŒã©ãŒïŒãš
ptvsd pythonã¢ãžã¥ãŒã«ïŒPythonçšVisual Studioãªã¢ãŒããããã°ãµãŒããŒïŒãã€ã³ã¹ããŒã«ããŸãã
ptvsdã¢ãžã¥ãŒã«
ã¯å¿
ãããŒãžã§ã³3.0.0ã«ã€ã³ã¹ããŒã«ããå¿
èŠã
ãããŸããææ°ããŒãžã§ã³ïŒçŸåšã®3.2.1.0ïŒã§ã¯
ãgithub.comã®
åé¡ã«ç€ºãããŠãããšã©ãŒãåãåããŸããã äžæçãªãœãªã¥ãŒã·ã§ã³ãšããŠ
ptvsdãšå¯Ÿè©±ããVS Codeã®Pythonæ¡åŒµã®äœæè
ã¯ãããŒãžã§ã³3.0.0ã®äœ¿çšãæšå¥šããŠããŸãã
$ lxc exec pytest -- /bin/bash -c 'apt install python3-pip -y' $ lxc exec pytest -- /bin/bash -c 'pip3 install ptvsd==3.0.0'
LXDã«é¢ããŠã¯ãã»ããã¢ãããå®äºããŸããã
VSã³ãŒããšæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãã
ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãªãã·ã§ã³ã¯ãå
¬åŒããŒãžã®
code.visualstudio.com/docs/setup/linuxã§èª¬æãããŠããŸãããã³ãã³ããå°ãå€æŽããŸãã
$ cd ~ $ wget -c https://packages.microsoft.com/keys/microsoft.asc $ cat microsoft.asc | gpg --dearmor > microsoft.gpg $ sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg $ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' $ sudo apt update $ sudo apt install code
å®è¡åŸãMicrosoftãªããžããªã®ææ°ããŒãžã§ã³ã®VSã³ãŒããã·ã¹ãã ã«è¡šç€ºãããŸãã
PSå·çã®æç¹ã§ãæ°ããããŒãžã§ã³1.18.0ããªãªãŒã¹ãããŸãããç§ã®æèŠã§ã¯ãæãæåŸ
ãããŠããïŒ2幎ïŒã³ãã¥ããã£æ©èœã®ããã€ãã¯ãããã«ãã«ãŒãã¯ãŒã¯ã¹ããŒã¹ããšããšã¯ã¹ãããŒã©ãŒã®Gitã€ã³ãžã±ãŒã¿ãŒããå®å®ããã¢ã»ã³ããªã«å«ãŸããŠããŸããããã¹ãŠã®å€æŽã«ã€ããŠèªãããšãã§ããŸã
ãã®ããŒãž ã
æ¡åŒµæ©èœã®ã€ã³ã¹ããŒã«ã«é²ã¿ãŸãã ããšãã°ã
Atomã ïŒäœæè
ãšããŠïŒäœ¿çšããåŸã«VS CodeãåããŠã€ã³ã¹ããŒã«ããå Žåã¯ã以äžã®ãªã¹ãã®æ¡åŒµæ©èœã«æ³šæããããšããå§ãããŸãããã®èšäºã®ç®çãéæããã«ã¯ãPythonãšCode Runnerã®ã¿ãã€ã³ã¹ããŒã«ããã ãã§ååã§ãã æ¡åŒµæ©èœã¯ããšãã£ã¿ãŒã®å·ŠåŽã®ããŒã±ãããã¬ã€ã¹ããã€ã³ã¹ããŒã«ãããŸãã
VSã³ãŒããæ§æãã
以äžã®èšå®ã¯ãªãã·ã§ã³ã§ãããã³ã³ããã§ã®Pythonã¹ã¯ãªããã®å®è¡ã«çŽæ¥é¢ä¿ããŸããããAtomã®ããã«èŠèŠçã«ãããå Žåã¯ãããã«ããè¿ã¥ããŸãã
éããŠãããšãã£ã¿ãŒã§ããšãã£ã¿ãŒã®èšå®ãéããŸãïŒãã¡ã€ã«->èšå®->èšå®ã å³åŽã®USER_SETTINGSã§éããŠã£ã³ããŠã§ã次ã®å€æŽãå ããŠä¿åããŸãïŒCtrl + SïŒïŒ
{
ãã£ã¬ã¯ããªãªã³ã¯ãã¹ã<->ã³ã³ãã
ç§ãã¡ã¯ãã§ã«çŽ æŽãããä»äºãããŠãããæçµæ®µéã«æ¥ãŠããŸãã ããã§ãã³ã³ããã§ã¹ã¯ãªãããå®è¡ããæºåãã»ãŒãã¹ãŠæŽããŸããã
/ home / user1 / projectsãªã©ã« ãããžã§ã¯ããã£ã¬ã¯ããªãäœæããŸãã å°æ¥ã®Pythonãããžã§ã¯ãããã¹ãããŸãã ãã®ãã£ã¬ã¯ããªãã³ã³ããã«ãªã³ã¯ããŸããã€ãŸããã³ã³ããå
ã§
ãã£ã¹ã¯ããã€ã¹ãäœæãããã®ãã£ã¬ã¯ããªãinternal
/ mnt / hostfsã«é¢é£ä»ããŸãã 次ã®ã³ãã³ããå®è¡ããŸãã
$ mkdir ~/projects $ lxc config device add pytest hostfs disk path=/mnt/hostfs source=/home/user1/projects/
/ home / user1 / projectsãã£ã¬ã¯ããªã«ãã£ã¬ã¯ããªãŸãã¯ãã¡ã€ã«ãããŒã«ã«ã§äœæãããšãã¢ãã¬ã¹
/ mnt / hostfsã®ã³ã³ããã«ããã«åæ ãããŸãã ããã確èªããã«ã¯ãã³ã³ããã§BASHã·ã§ã«ãã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ããlsã³ãã³ããçºè¡ããŸãã
$ lxc exec pytest -- /bin/bash $ ls -l /mnt/hostfs/
ã³ã³ããå
ã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªãèªã¿åãå°çšã«ãªãã
nobodyïŒnogroupã«çãã
UIDïŒGIDãæã€ããšã
ããããŸãã ã¹ã¯ãªãããå®è¡ããã«ã¯ããã§ååã§ãããã³ã³ããå
ã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªãæžã蟌ã¿å¯èœã«ããå¿
èŠãããå Žåã¯ã
ãã®èšäºã® ã
ãŠãŒã¶ãŒ/ã°ã«ãŒãã®çŽæ¥ãããã³ã° ãã®ç« ããèªã¿
ãã ãã ã
ã³ã³ããã§ã¹ã¯ãªãããå®è¡ããããã®VSã³ãŒãã®æ§æ
ãã®ããããšãã£ã¿ãŒãéããŠããå床éãããšãã§ããããã«ãªããŸããã ã¡ãã¥ãŒ
ãã¡ã€ã«->æ°èŠãã¡ã€ã«ãã¯ãªãã¯ã
ãŸã ã æ°ããã¿ããäœæããã次ã®python-codeãäœæããå¿
èŠããããŸãããã®ã³ãŒãã¯ã³ã³ããã§å®è¡ããŸãã ãã£ã¬ã¯ããª
/ home / user1 / projects / pytest / test.pyã«ä¿åããŠããããã¡ã€ã«ïŒã¿ãïŒãéããããšãã§ããŸãã
import os
VS Codeã¯ãpylintã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãããŠããªãããšããèšããŸããããä»ã¯å¿
èŠãããŸãããpipã¢ãžã¥ãŒã«ãããŒãžã£ãŒã䜿çšããŠãåŸã§èªåã§ã€ã³ã¹ããŒã«ã§ããŸãã 次ã«ãVS Codeã§ã¯ãŒã¯ã¹ããŒã¹ãéãå¿
èŠããããŸãããã®ããã«ã¯ã
ãã¡ã€ã«ãšã¯ã¹ãããŒã©ãŒã®å·ŠåŽã§
ã [
ãã©ã«ããŒã
éã ]ãã¿ã³ãã¯ãªãã¯ãããã£ã¬ã¯ããª
/ home / user1 / projects / pytest /ãéžæããŸãã
VS Codeãååæåããããã¹ãŠã®ãŠã£ã³ããŠãå®å
šã«éããããtest.pyãã¡ã€ã«ã衚瀺ãããã¯ãŒã¯ã¹ããŒã¹ãéããŸãã File Explorer VS Codeã®å·ŠåŽã®ååãããã«ã¯ãªãã¯ããŠéããŸãã
[ãã¡ã€ã«]-> [èšå®]-> [èšå®]ã¡ãã¥ãŒãã¯ãªãã¯ããŠã¯ãŒã¯ã¹ããŒã¹ã®èšå®ãåŒã³åºããå³äžã®ãŠã£ã³ããŠã§USER_SETTINGSã®ä»£ããã«ããããããŠã³ãªã¹ãããWORKSPACE_SETTINGSãéžæããŸãã
次ã®èšå®ãäœæããŠä¿åãã次ã®ããã«ããŸãã
{ "code-runner.executorMap": {
ãã¡ã€ã«ãšã¯ã¹ãããŒã©ãŒã§ã¯ã
.vscodeãã£ã¬ã¯ããªã«
settings.jsonãã¡ã€ã«ããããïŒçŸåšã®ãããžã§ã¯ãã®ïŒ
ã¯ãŒã¯ã¹ããŒã¹èšå®ãããã«ä¿åãããŸãã
éããŠãã
test.pyãã¡ã€ã«ã«æ»ãã[
ã³ãŒãã®
å®è¡ ]ã³ã³ããã¹ãã¡ãã¥ãŒããã³ãã³ãã
å®è¡ããŸãã
çµ±åã¿ãŒããã«ã®åºåã«ã¯ããªã¢ãŒããã·ã³ïŒã³ã³ããïŒã§ã³ãŒããå®è¡ãããããšã確èªã§ããæ
å ±ã衚瀺ãããŸãã ã³ã³ããã§ãããžã§ã¯ããå®è¡ããå¿
èŠããããšãã¯ãã€ã§ããWORKSPACE_SETTINGSã§èšå®ãè¡ãããåãããžã§ã¯ãã®
.vscode / settings.jsonãã¡ã€ã«ãäœæããŠãããèšå®ã®ãã¹ãå°ã調æŽããŸãã
VSã³ãŒãã§ã®ãªã¢ãŒããããã°
test.pyãã¡ã€ã«ã®è¡ã®ã³ã¡ã³ãã解é€ããŠããã®ãã¡ã€ã«ãä¿åããŸãã
ãªã¢ãŒããããã°ãå¿
èŠãªå Žåã¯ããããã®ã³ãŒãè¡ããå®è¡ã®ããã«èµ·åããããã¡ã€ã«ã«æ¿å
¥ããå¿
èŠããããŸãã ã³ã³ããåŽã®ptvsdã¢ãžã¥ãŒã«ã¯ããŒã3000ãéããå€éšãããã¬ãŒãæ¥ç¶ããããšãæ³å®ããŠããŸãã å¿
èŠã«å¿ããŠãç¬èªã®æ¹æ³ã§ptvsdãæ§æã§ããŸãã
[ã³ãŒãã®å®è¡]ã³ã³ããã¹ãã¡ãã¥ãŒãåŒã³åºããŠã³ãŒããå®è¡ããŸãã çµ±å端æ«ã§ã¯ãã¹ã¯ãªãããããŒã3000ã§ã®æ¥ç¶ãåŸ
æ©ããŠãããšããã¡ãã»ãŒãžã衚瀺ãããŸãããããã¬ãŒã«ç§»åããŠããã®ãããžã§ã¯ãã®æ°ããæ§æãäœæããŸãã
launch.jsonãã¡ã€ã«ãç·šéçšã«éããæ¢ã«ããªã»ããããããŸãã 次ã®ã³ãŒããããã¯ã貌ãä»ããŸãã
{ "name": "Python LXC", "type": "python", "request": "attach", "localRoot": "${workspaceRoot}", "remoteRoot": "/mnt/hostfs/pytest", "host": "pytest", "port": 3000, "secret": "my_secret" }
ä¿åãããšã
setting.jsonãã¡ã€ã«ã®æšªã®
.vscode / launch.jsonãã£ã¬ã¯ããªã«è¡šç€ºãããŸãã 次ã«ãå·ŠåŽã®[
Python LXC]ããããããŠã³ãªã¹ããéžæããŸããããã¯å
ã»ã©äœæãããããã¬ãŒæ§æã§ãã
[ãããã°ã®éå§]ãã¯ãªãã¯ããŸãã ãã¡ã€ã«
test.pyã®ãããŠã£ã³ããŠã«ãåäœäžã®ãããã¬ãŒãšãã³ãŒãããªã¢ãŒãã§éå§ãããããšã®ç¢ºèªã衚瀺ãããŸãã
ããã ãã§ã ã»ããã¢ãããå®äºããŸããã æ°ããpythonãããžã§ã¯ãã«å°æ¥å¿
èŠãªã®ã¯ã2ã€ã®
.vscode / settings.jsonããã³
.vscode / launche.jsonæ§æ
ãã¡ã€ã«ãæ§æ
ããããšã§ã ã ãããã¯ã«ã€ããŠè³ªåãããå Žåã¯ãã³ã¡ã³ãã§ãå°ããã ããã ããªãã®æ³šæãæåãããããžã§ã¯ãã«æè¬ââããŸãïŒ
11/10/2017 21:35 MSKããã®UPDã
ã³ã¡ã³ãã§ã¯ããŠãŒã¶ãŒ
SirEdvinã¯ãã³ã³ããã«ã®ã¿ã€ã³ã¹ããŒã«ãããŠããpythonã¢ãžã¥ãŒã«ã®ãšãã£ã¿ãŒã§ã®èªåè£å®ïŒãŸãã¯Microsoftã®çšèªã§ã¯IntelliSenseïŒã®å¯èœæ§ã«ã€ããŠå°ããŸãããã€ãŸãããããã®ã¢ãžã¥ãŒã«ã¯VS Codeãå®è¡ãããŠããããŒã«ã«ãã·ã³äžã«ãããŸããã
ãã®ç¹ã¯èšäºã§ã¯èŠéããŠããã®ã§ãå°ããªç« ã§è£è¶³ããŸãã
å€éšPythonã©ã€ãã©ãªã®èªåè£å®ã»ããã¢ããïŒIntelliSenseïŒ
ããšãã°ããããžã§ã¯ãã§ã¯ãPythonã®ããã©ã«ãããã¯ã¹ã§æäŸãããŠããªãã¢ãžã¥ãŒã«ã䜿çšãããã®ã¢ãžã¥ãŒã«ãã³ã³ããã«ã®ã¿ã€ã³ã¹ããŒã«ããŸããã ãã¹ãã«ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããã«ãšãã£ã¿ãŒã§VS Codeããç解ãããªãŒãã³ã³ããªãŒããããã³ãã衚瀺ããããã³ã³ãããŒã®ã¢ãžã¥ãŒã«ããååŸããæ¹æ³ã¯ïŒ
ãã®åé¡ã解決ããã«ã¯ã
YOUR_path_to_project / .vscode / settings.jsonã§WORKSPACE_SETTINGSèšå®ã
éã ã
python.autoComplete.extraPathsãã©ã¡ãŒã¿ãŒãè¿œå ããPythonã¢ãžã¥ãŒã«ãå«ãã³ã³ãããŒãã£ã¬ã¯ããªã®ãªã¹ããããŒãšããŠæå®ããŸãã
ããšãã°ãã³ã³ããã¯
/ var / lib / lxd / containers / pytest / rootfs /ã®ãã¹ããã¡ã€ã«ã·ã¹ãã ã§å©çšã§ã
ãŸã ã ããã¯ã
pytestã³ã³ããã®ã«ãŒããã¡ã€ã«ã·ã¹ãã ã§ãã Pythonãå€éšã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããå Žæãããã£ãŠããã®ã§ããã®ãã¹ãç°¡åã«è¿œå ããŠãå€éšã©ã€ãã©ãªãžã®ãã«ãã¹ãååŸã§ããŸãã numpyãªã©ã®ã¢ãžã¥ãŒã«ã®å Žåããã«ãã¹ã¯
/var/lib/lxd/containers/pytest/rootfs/usr/local/lib/python3.6/dist-packagesã«ãªããŸãã ãã®ããã«ããã®ãã¹ã
python.autoComplete.extraPathsèšå®ã«è¿œå ããŸãã
èšå®ãä¿åããŠããããžã§ã¯ãã«æ»ããŸãã numpyã¢ãžã¥ãŒã«ãã€ã³ããŒãããŠãCTRL +ã¹ããŒã¹ããŒã§èªåè£å®ãåŒã³åºããŠãã ããã ç»é¢ã®ããã«ã§ããã¯ãã§ãïŒ
ããã«åäœããªãå Žåã¯ãèœèããªãã§ãã ãããVSCodeã¯çµæããã£ãã·ã¥ããããã«åäœããªãå ŽåããããŸãããšãã£ã¿ãŒãéããŠéããfrom ... importããŒã¯ãŒãã®åŸã«ââCTRL + SPACEããŒãæŒããŠã¿ãŠãã ããã
ããã ãã§ã:)