Python 3.x์๋ ๋จ์ํ "configparser"๋ผ๊ณ ํ๋ configparser ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฑํฌํธ๊ฐ ์์ต๋๋ค. ์๋ก ๋์ ๋ ๋ค์ค ์ธ์ด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํจํค์ง๊ฐ ๋ฐฑํฌํธ๋ฅผ ๋ฌด์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ ๋ค ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ python-future์ ์๊ตฌ ์ฌํญ ๋ชฉ๋ก์ configparser ๋ฐฑํฌํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
๋ํ ๋ฐฑํฌํธ ์ ์ฅ์์์ ์ฌ๋๋ค์ ์ด๋ฏธ ์ด๊ฒ์ด ์๋ํ์ง ์๋๋ค๊ณ ๋ณด๊ณ ํฉ๋๋ค. https://bitbucket.org/ambv/configparser/issue/8/configparser-import-broken-on-py27
๋น๋ถ๊ฐ configparser์์ python-future์ ๋ํ ์ข ์์ฑ์ ์ ๊ฑฐํ์ฌ ์๋ํ๋๋ก ํด์ผ ํ์ต๋๋ค.
+1
๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก python-future๋ ์ค์น๋ ๋ค๋ฅธ ๋ชจ๋ IMO๋ฅผ ์๋์ํ๋ ๋ชจ๋์ ์ค์นํด์๋ ์ ๋ฉ๋๋ค. ๋ค๋ฅธ ๋๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ผ๋ฏ๋ก ๊ฐ์ง ์ข ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ๊ทธ๋ฅ ํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค.
@ambv , @Julian : ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ง๋ง ์์ง ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ๋ด๊ฐ ๋ณด๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
configparser
๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฌธ์๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋์ configparser
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํฉ๋๋ค. ์ด๊ฒ์ ์๋ฏธ๊ฐ ์์ ์ ์์ง๋ง configparser
๊ฐ Py2.7์ ConfigParser
์ ๋ํ ๋๋กญ์ธ ๋์ฒด๊ฐ ์๋ ํ ๊ทธ๋ ์ง ์์ต๋๋ค. ํ์ฌ import ConfigParser
๋ฅผ import configparser as ConfigParser
๋ก ๊ต์ฒดํ ํ ์ค์น๋ configparser
ํจํค์ง๋ก Python 2.7.9์์ test_cfgparser.py
๋ฅผ ์คํํ ๋ 14๊ฐ์ ์คํจ์ 9๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค. python-future์ ๊ฐ๋จํ configparser
๋ณ์นญ์ด ์ค์น๋๋ฉด ๋์ผํ ํ
์คํธ๊ฐ ๋ชจ๋ ํต๊ณผํฉ๋๋ค.configparser
๋ณ์นญ ํจํค์ง๋ฅผ ์ค์นํ๋๋ก python-future์์ setup.py
๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๊ฒ์ ๋จ์ ์ ์ค์น๋ ํจํค์ง๊ฐ requirements.txt
์ ๋์ด๋ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์
๋๋ค. ๋ ๋์ ๊ฒ์ pip
๊ฐ requirements.txt
์ ๋ํ๋๋ ์์๋๋ก ํจํค์ง๋ฅผ ์ค์นํ๋ค๊ณ ๋ณด์ฅํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. configparser
๋ฐ future
๊ฐ ๋ชจ๋ ๋์ด๋๋ฉด pip
์ ์ํด ์ค์น๋ ํจํค์ง ์ธํธ๊ฐ ๋น๊ฒฐ์ ์ ์
๋๋ค.pip install future[without_configparser]
์ ๊ฐ์ ์ค์น ์ต์
์ ์ง์ํ๋ ค๋ฉด setuptools์ extras
๊ธฐ๋ฅ์ ์ฌ์ฉํ์ญ์์ค.configparser
ํจํค์ง๋ฅผ ์ฌ์ฉํ ๋ Python 2.7.9 ํ
์คํธ ์ค์ํธ๋ฅผ ํต๊ณผํ๋๋ก ์์ ํ ์ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น? ์ด๋ ๊ฒ ํ๋ฉด ํ์ฌ ConfigParser
๋ฅผ ์ฌ์ฉํ๋ Py2 ์ฝ๋์ ์ํํ ์
๊ทธ๋ ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ํด ์ถ์ฒํ ์ ์์ต๋๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ ์ ์ ๋ ๋ง์ ์ฌ๋๋ค์ด configparser ๋ฐฑํฌํธ๋ฅผ ์ง์ ์ฌ์ฉํฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ด Python 2.x์ ์๋ ๋์ ์ต์ ์ ์คํธ๋ฆผ API(๋ฐ ๊ธฐ๋ฅ)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ๋๋ ๋น์ ์ ์คํจํ ํ ์คํธ์ ๊ด๋ จ์ฑ์ ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด์ API๋ฅผ ์ํ๋ฉด ์ด์ ๋ชจ๋ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ API๋ฅผ ์ํ๋ฉด ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. Python 3์ ๋์ฒดํ ์์น์ 2.x ConfigParser๋ฅผ ๋ฐฐ์นํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
Kali https://bugs.kali.org/view.php?id=3245 ์์ ์ด์ ๋ํ ๋ณด๊ณ ์๋ฅผ ๋ฐ์๊ณ ์ผ๋ฐ์ ์ธ Kali Linux ์์คํ ์๋ Python์ด ๋ชจ๋ ํ์ํ ํจํค์ง๊ฐ ์์ผ๋ฏ๋ก ์ด์ ๋ํ ์์ ์ฌํญ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. -future ๋ฐ python-configparser. ํ์๋ ์ด ๋ฒ๊ทธ๋ก ์ธํด Python 2.x์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ ๋ํด ์์๋์์ต๋๋ค.
์์ฝํ์๋ฉด (1)์ ๊ตฌํํ๊ณ configparser์ ๋ํ ํ ์คํธ๋ฅผ ์ญ์ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. (2) ๋ฐ๋น์ ํจํค์ง๊ฐ ์ต์ ํ๊ฒฝ์์ ๋น๋๋๊ณ setup.py๊ฐ ์คํ๋ ๋ python-configparser๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. (3) ๊ฐ๋ฅํ์ง๋ง python-future์ API๋ ์ค์น ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ฐฐํฌํ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ค์นํ ์ ์์ผ๋ฏ๋ก ์ข์ ์๊ฐ์ด ์๋๋๋ค.
๊ฐ์ฌํฉ๋๋ค! cc @sbrun
์๋ฅผ ๋ค์ด ํ์ฌ Fedora๋ ๋ฐฑํฌํธ๋ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก configparser๋ฅผ ํจ์นํฉ๋๋ค .
FWIW, ์ ๋ ํ์ฌ ๋ฐฑํฌํธ์ ๋ณํฉํด์ผ ํ๋ ์ ์คํธ๋ฆผ ์์ ์ ์งํ ์ค์ด๋ฉฐ ๋ด์ผ configparser ๋ฐฑํฌํธ 3.5.1์ ๋ฆด๋ฆฌ์คํ ์์ ์ ๋๋ค. python-future์ ๊ดํด์๋ (1)์ ๊ตฌํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ ฅํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
v0.16์ python-future์์ configparser
๋ฅผ ๊ธฐ๊บผ์ด ์ ๊ฑฐํ๊ฒ ์ต๋๋ค. ์งํ ์ค์ธ ๋ถ๊ธฐ๊ฐ ์์ต๋๋ค: https://github.com/PythonCharmers/python-future/tree/v0.16.x.
ConfigParser.read_dict
๊ฐ ๋ด ์ปดํจํฐ์์ ์๋์ ๋ฉ์ถ ์ด์ ๋ฅผ ์์๋ด๋ ค๊ณ ์ฌ๊ธฐ์ ์์ต๋๋ค.
๋ด๊ฐ ์ฌ์ฉํ๋ ํจํค์ง ์ค ํ๋๊ฐ python-future
(ํนํ QGIS์ ์ผ๋ถ)์ ๋ฐ๋ผ ์์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ Python 2.7์ ConfigParser ๋ฒ์ ์ด ConfigParser์ ์ ์ฒด API๋ฅผ ๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํ์ด์ฌ 3.x์์
ํจํค์ง์ python-future
๋ฒ์ ์ ์ ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
sudo chmod 000 /usr/lib/python2.7/dist-packages/configparser/
Flake8์ ์ต๊ทผ @ambv ๊ฐ ๊ด๋ํ๊ฒ ์ ์ง ๊ด๋ฆฌํ๋ configparser ๋ฐฑํฌํธ์ ๋ํ ์ข ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค. ์ผ๋ถ ์ฌ์ฉ์๋ Flake8์ ๊ธฐ์กด, ํ ์คํธ ๋ฐ ๋ฌธ์ํ๋ ๋์์ ๊นจ๋ ์ด ๋ชจ๋๋ ์ค์นํ์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๋ฌธ์ ์ด๋ฉฐ, ์ด์ ์ฌ๋๋ค์ด ๋ฌธ์ ๋ฅผ ๋ณผ ์ ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด Flake8์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ธฐ ์์ํ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ฌํ ๋ฒ๊ฑฐ๋ก์์ ํผํ ์ ์๋๋ก Future๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธ๋ ๊ฒ์ ๋๋ค.
@sigmavirus24 Ian, ์ง๊ธ์ configparser
๋ฐฑํฌํธ์ ๋ฐ๋ผ from backports import configparser
์์์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ์ฐจ๋จ ํด์ ํ๊ธฐ ์ํด ํน๋ณํ ๊ตฌํ๋์์ต๋๋ค.
@ambv ๊ฐ์ฌํฉ๋๋ค! ๋ด๊ฐ ๊ทธ๋ ๊ฒ ํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค.
์ด์ configparser
๋ฅผ ์ ๊ฑฐํ๋ v0.16.0์ ์ถ์ํ์ต๋๋ค. ๋ฌธ์์์๋ Lukasz์ ๋ฐฑํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@edschofield ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๊ฐ์ด ์ง๋๋ฉด์ ์ ์ ๋ ๋ง์ ์ฌ๋๋ค์ด configparser ๋ฐฑํฌํธ๋ฅผ ์ง์ ์ฌ์ฉํฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ด Python 2.x์ ์๋ ๋์ ์ต์ ์ ์คํธ๋ฆผ API(๋ฐ ๊ธฐ๋ฅ)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ๋๋ ๋น์ ์ ์คํจํ ํ ์คํธ์ ๊ด๋ จ์ฑ์ ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด์ API๋ฅผ ์ํ๋ฉด ์ด์ ๋ชจ๋ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ API๋ฅผ ์ํ๋ฉด ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. Python 3์ ๋์ฒดํ ์์น์ 2.x ConfigParser๋ฅผ ๋ฐฐ์นํ๋ ๊ฒ์ ๋ ์ด์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
Kali https://bugs.kali.org/view.php?id=3245 ์์ ์ด์ ๋ํ ๋ณด๊ณ ์๋ฅผ ๋ฐ์๊ณ ์ผ๋ฐ์ ์ธ Kali Linux ์์คํ ์๋ Python์ด ๋ชจ๋ ํ์ํ ํจํค์ง๊ฐ ์์ผ๋ฏ๋ก ์ด์ ๋ํ ์์ ์ฌํญ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. -future ๋ฐ python-configparser. ํ์๋ ์ด ๋ฒ๊ทธ๋ก ์ธํด Python 2.x์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ ๋ํด ์์๋์์ต๋๋ค.
์์ฝํ์๋ฉด (1)์ ๊ตฌํํ๊ณ configparser์ ๋ํ ํ ์คํธ๋ฅผ ์ญ์ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. (2) ๋ฐ๋น์ ํจํค์ง๊ฐ ์ต์ ํ๊ฒฝ์์ ๋น๋๋๊ณ setup.py๊ฐ ์คํ๋ ๋ python-configparser๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. (3) ๊ฐ๋ฅํ์ง๋ง python-future์ API๋ ์ค์น ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ฐฐํฌํ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ค์นํ ์ ์์ผ๋ฏ๋ก ์ข์ ์๊ฐ์ด ์๋๋๋ค.
๊ฐ์ฌํฉ๋๋ค! cc @sbrun