ํ๊ฒฝ
Conda๋ฅผ ์ฌ์ฉํ๋ CircleCI(์: https://circleci.com/gh/peterjc/tapbi-pict/1073)
pip install --upgrade pip setuptools
)๋ด ์ฝ๋๋ฅผ ์ฝ๊ฐ๋ง ๋ณ๊ฒฝํ์ง๋ง ์ค๋ ๋ด Python ๋๊ตฌ์ ๋น๋/์ค์น ๋จ๊ณ์์ CircleCI ๋น๋๊ฐ ์ค๋จ๋์์ต๋๋ค. ์ฌ๋ฌ ๋ถ๊ธฐ๊ฐ ์ํฅ์ ๋ฐ์์ต๋๋ค. ํ์ด๋ฐ์ PyPI์ pip 19.3 ๋ฆด๋ฆฌ์ค์ ๋ง์ต๋๋ค.
์ค๋ช
pip์ ์ต๊ทผ ๋ฆด๋ฆฌ์ค๊ฐ ์ผ๋ถ ๋ด๋ถ ํ์ผ์ ์ด๋ํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ ์ถ์ธก์ผ๋ก๋ #6830์ ๋๋ค.
์์๋๋ ํ๋
๋ฒ์ ๋ฐฉ๋ฒ
https://github.com/peterjc/tapbi-pict/blob/9fcec2da60e6e6ae5cf7ee6ad4b53dcc3a40cfe7/.circleci/config.yml#L ์ ์คํ ์ค์ธ https://circleci.com/gh/peterjc/tapbi-pict/1073์ ์ ์ฒด ์ถ๋ ฅ
...
python setup.py sdist --formats=gztar
python setup.py bdist_wheel
pip install dist/thapbi_pict-*.whl
์ฐ์ถ
Traceback (most recent call last):
File "/opt/conda/bin/pip", line 7, in <module>
from pip._internal import main
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
from pip._internal.cli.autocompletion import autocomplete
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
from pip._internal.cli.main_parser import create_main_parser
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
from pip._internal.commands import (
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
from pip._internal.commands.download import DownloadCommand
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/download.py", line 10, in <module>
from pip._internal.operations.prepare import RequirementPreparer
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
from pip._internal.distributions import (
File "/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
Exited with code 1
CircleCI(๋๋ conda?) ์ค์ ์์ ์ด๋ฌํ ๋ด๋ถ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ ๊ฒ์ด ์ ๋ง ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ฌ๊ตฌ์ฑ์ ์ธ๋ถ ์ฝ๋์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์๊ณ ์๋ ์ฃผ์ ๋ฌธ์ ๋ ๋ํผ ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ฃผ๋ main์ ์ฌ๊ตฌ์ฑ์ด์ง๋ง ์ด๊ฒ์ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๋ณด์ ๋๋ค. ๋น์ ์ด ์ค ์ ์๋ ํต์ฐฐ๋ ฅ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
pip install --upgrade pip setuptools
์ ์ ๊ฑฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋จ์ ํ์ธํ์ต๋๋ค.
https://github.com/peterjc/tapbi-pict/commit/4060404c1034a676439aef1369260022577a6627
https://circleci.com/gh/peterjc/tapbi-pict/1074
์ฆ, pip 19.2.3์์ 19.3์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ ๋ ์๋์ ์ผ๋ก CircleCI ์ ๊ณต Python์ด ์๋๋ผ Conda ์ ๊ณต Python์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Python์ ํผํฉํ์ฌ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด pip ...
์์ python -m pip ...
๋ก ์ ํํ๋ ๋ฐ ๊ฐ์น๊ฐ ์์ต๋๊น?
์ง๊ธ ๋ธ๋์น์์ ์์ ํ๋ฉด์ ๋ก๊น ์ ์กฐ๊ธ ๋ ์ถ๊ฐํ๊ณ ๊นจ์ง ๋ฒ์ ์ผ๋ก ๋๋๋ ธ์ต๋๋ค.
https://circleci.com/gh/peterjc/tapbi-pict/1076
์ด๊ฒ์ ํธ๋ ์ด์ค๋ฐฑ์ด pip install dist/thapbi_pict-*.whl
(์๋ก ๋น๋๋ ๋จ์ผ ํ ๊ณผ ์ผ์นํ๋ ์์ผ๋์นด๋)์ ์ํด ํธ๋ฆฌ๊ฑฐ๋์์์ ํ์ธํฉ๋๋ค.
OK, ์ฌ์ฉ python -m pip ...
๋ณด๋ค๋ pip ...
๋์์ด๋์ง ์์ต๋๋ค :
https://circleci.com/gh/peterjc/thapbi-pict/1077
https://github.com/peterjc/tapbi-pict/commit/c168fbb7b61b2670bfb73dfb7ea87605fd17bfaf
๊ทธ๋งํ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ from pip._internal import main
๊ฐ pip์ ๊ฐ๋จํ ์
๊ทธ๋ ์ด๋์์ ์๋ํ๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค(Windows์์๋ ์ค์ ๋ก ์ข์ ๋น๊ต๋ ์๋์ง๋ง ์ด์จ๋ ...). ๋ฐ๋ผ์ ์ญ์ถ์ ์์ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์๋ ์์ง๋ง ๊ทํ์ ํ๊ฒฝ์ ์ผ์นํ์ง ์๋ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
CircleCI์๋ VM์ ๋ํ SSH ์ก์ธ์ค๋ก ์์ ์ ๋ค์ ์คํํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก(์ฌ์ฉํ ์ ์ด ์์) ์ด๋ก ์ ์ผ๋ก ์ด๊ฒ์ ๋๋ฒ๊น ์ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋์๋ถํฐ ์์ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ ์ง๊ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๊ณ ์ด๋ ์์ ์์ conda-forge๋ pip 19.3๋ ํจํค์ง๋ก ๋ง๋ค ๊ฒ์ด๋ฏ๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋์ผํ ์์ธ๋ฅผ ๋ณด์ง ์๋ ํ ๋ฎ์ ์ฐ์ ์์๋ก ๋ณด์ ๋๊น?
๊ทธ๋ ์ข์. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์ง๊ธ์ ๊ทธ๋๋ก ๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ค๋ฅธ ๊ณณ์์ ์ผ์ด๋๊ณ ์๋ค๊ณ ๋ณด๊ณ ํ๋ ์๊ฒฌ์ ์ถ๊ฐํ๋ฉด ์ฐ๋ฆฌ๋ ๋ ํ๊ณ ๋ค ์ ์์ต๋๋ค. ์๋ง๋ ๋์์ด ๋ ์ถ๊ฐ ์ ๋ณด๊ฐ ์์ ๊ฒ์ ๋๋ค.
macOS, python: 3.6.9์์ ๋น์ทํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ๋ด ํฐ๋ฏธ๋์ pip ๋ช ๋ น์ด ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ค ์ ์?
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
์ด๊ฒ์ ํ์ฌ ๋์์ด๋์์ต๋๋ค.
1์๊ฐ ์ ๋ถํฐ CircleCI์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง์ ๋ฒ์ ์ python:3.7 ์์ python:3.7.4๋ก ๋ณ๊ฒฝ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค. (๊ทธ๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ) . ์ด์ ๊ฐ์ด:
version: 2
...
jobs:
build:
docker:
- image: python:3.7.4
...
์บ์ฑ ์ฌ์ฉํ์๋ ๋ถ ๊ณ์ ๊ฐ์? ์ผ๋ถ pip ๋ด๋ถ๊ฐ ๋ณ๊ฒฝ๋๊ณ ์ด์ python ๋ฒ์ ์ ์บ์๋ฅผ ๋ณต์ํ ๋ pip๊ฐ ์ค๋จ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. keys
๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ํด CI ์บ์๋ฅผ ๋ฌดํจํํ๊ณ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. (์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค!)
@bgkelly๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ ์บ์๋ฅผ ์ง์ฐ๋ ๊ฒ๋ ์ ์๊ฒ
์ - ์ ์ ๋์ผํฉ๋๋ค - ์บ์ ํค๋ฅผ ๋ณ๊ฒฝํ๋ฉด circleci์ ๋ํ ์ฐ๋ฆฌ ํ์ ํ๋ก์ ํธ์์ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. @bgkelly ๊ฐ์ฌ
์บ์ ํค๋ฅผ ๋ณ๊ฒฝํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
requirements.txt
์ฃผ์์ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ๋์ง๋ง ์ํ๋ ์๋ฃจ์
์ ์๋๋๋ค.
์, ์ด๊ฒ์ CircleCI์ ์บ์ฑ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋๊ตฐ๊ฐ CircleCI ์ฌ๋๋ค์๊ฒ (์ง์ ์ฑ๋์ ํตํด) ์ฐ๋ฝํ ์ ์์ต๋๊น? ๊ทธ๋ค์ด ์ด๊ฒ์ ์กฐ์ฌํ๊ณ ์ฌ๊ธฐ์ ์ฐจ์์ ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์๋ ์น๊ตฌ๋ค,
์ด๊ฒ์ด ์ด๋ค ์์ผ๋ก๋ ๋์์ด ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง WeasyPrint๋ฅผ ์ค์นํ๋ ค๊ณ ํ๋ MSYS ์ค์ ์์ ๋์ผํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
python3-pip ๋ฐ python3-setuptools๋ฅผ ์ ๊ฑฐํ ํ /usr/lib/python3.7/site-packages/์ ๋ชจ๋ pip ํด๋๋ฅผ ์ญ์ ํ๊ณ ๋ ๋ค ๋ค์ ์ค์นํ์ต๋๋ค. ํน์ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
pacman -R python3-pip python3-setuptools
rm -R /usr/lib/python3.7/site-packages/pip
rm -R /usr/lib/python3.7/site-packages/pip-19.3.1.dist-info
pacman -S python3-pip python3-setuptools
๊ณตํํ๊ฒ, ๋๋ ์ด์ ์ปดํ์ผ๋ฌ ๋ฌธ์ ์ ๋ถ๋ช์ณค์ต๋๋ค. ํ์ง๋ง ์ ๊ฐ ๋์ธ ์ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค....
์ด๊ฒ์ด ๋์์ด ๋ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋ค๋จ๊ณ ์ค์ ์์ ํ ๋์ปค ์ด๋ฏธ์ง์์ ๋ค๋ฅธ ๋์ปค ์ด๋ฏธ์ง๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ณต์ฌํ ๋ ๋ค๋ฅธ ์ปจํ ์คํธ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์์ค ์ด๋ฏธ์ง์๋ pip
์ ์ต์ ๋ฒ์ ์ด ํฌํจ๋์ด ์๋ ๋ฐ๋ฉด ๋์ ์ด๋ฏธ์ง์๋ pip
์ ์
๊ทธ๋ ์ด๋๋ ๋ฒ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์์ค ์ด๋ฏธ์ง์ ๊ฐ์ ํ๊ฒฝ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋์ ์ด๋ฏธ์ง์ ๋ณต์ฌํ ํ ๊ฐ์ ํ๊ฒฝ site-packages
์๋์ pip-<version>.dist-info
๊ฐ์ ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ( pip
๊ฐ ์๋ํ์ง ์์ ์ด ๋ฌธ์ ์์ ๋ณด๊ณ ๋ ๊ฒ๊ณผ ๋์ผํ ์ค๋ฅ์
๋๋ค.
์ด๋ฏธ ํจํค์ง๊ฐ ์ค์น๋ ํ๊ฒฝ์ ๊ฐ์ ํ๊ฒฝ์ ๋ณต์ฌํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ค์ ํ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ์ง ์์์ต๋๋ค.
์ด์จ๋ ํจํค์ง ์ถฉ๋ ๋ฌธ์ ๋ก ๋ณด์ ๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค! :์๋ค:
์๋
๋ด๋ถ ReadTheDocs ์๋ฒ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฌธ์๋ฅผ ์์ฑํ ๋ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip
ReadTheDocs GUI ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋น๋ ์บ์๋ฅผ ์ง์ฐ๋ฉด ๋น๋๊ฐ ์ฑ๊ณตํ์ง๋ง ๋ค์์ ๋น๋๊ฐ ์์๋ ๋๊น์ง๋ง ๊ฐ๋ฅํฉ๋๋ค.
์ ์ฒด ๋ก๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Traceback (most recent call last):
File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/__main__.py", line 16, in <module>
from pip._internal import main as _main # isort:skip # noqa
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
from pip._internal.cli.autocompletion import autocomplete
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
from pip._internal.cli.main_parser import create_main_parser
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
from pip._internal.commands import (
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
from pip._internal.commands.download import DownloadCommand
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 10, in <module>
from pip._internal.operations.prepare import RequirementPreparer
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
from pip._internal.distributions import (
File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'
์๋ ,
๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
OS: ๋ฐ๋น์ GNU/๋ฆฌ๋
์ค 10(๋ฆฌ๋
์ค 4.19.0-6-amd64)
ํ: 19.3.1
์ฝ๋ค: 4.7.12
ํ์ด์ฌ:3.7.4
$ ํ
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/home/jiang/anaconda3/bin/pip", 7ํ, in
pip._internal import ๋ฉ์ธ์์
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", 40ํ,
pip._internal.cli.autocompletion ๊ฐ์ ธ์ค๊ธฐ ์๋ ์์ฑ์์
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", 8ํ,
pip._internal.cli.main_parser์์ ๊ฐ์ ธ์ค๊ธฐ create_main_parser
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", 11ํ,
pip._internal.commands์์ ๊ฐ์ ธ์ค๊ธฐ(
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", 9ํ, in
pip._internal.commands.download import DownloadCommand์์
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", 10ํ,
pip._internal.operations.prepare import RequirementPreparer์์
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", 9ํ,
pip._internal.distributions์์ ๊ฐ์ ธ์ค๊ธฐ(
ํ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ๋ผ์ธ 1, in
pip._internal.distributions.source์์ SourceDistribution ๊ฐ์ ธ์ค๊ธฐ
ImportError: 'pip._internal.distributions.source'(/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)์์ 'SourceDistribution' ์ด๋ฆ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
ํนํ pip ๋ฒ์ 19.2.3์ ์ฌ์ฉํ๋๋ก ๋น๋ ํ๋ฆ์ ๋ณ๊ฒฝํ์ฌ ๋ก์ปฌ ReadTheDocs ์๋ฒ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํํ ์ ์์์ต๋๋ค. ์ด์ ReadTheDocs๋ ๋ค์ ๋น๋ ๋ช ๋ น์ ์คํํ๋ฉฐ ๋ ์ด์ ์บ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip==19.2.3
๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๋ฉด ํน์ pip ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ก์ปฌ python_environment.py ํ์ผ์ ์ ๋ฐ์ดํธํ์ต๋๋ค. https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/py2
cmd = pip_install_cmd + ['pip']
๋ฐ๋์๋ค:
cmd = pip_install_cmd + ['pip==19.2.3']
๋ด ์ค์ ์ด ๋๋ถ๋ถ์ ๊ฒ๊ณผ ๋ค๋ฅผ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ฒฐ๊ตญ ๋ฌธ์ ๋ ๊ฐ์ ํ๊ฒฝ์ PIP sources/
๋๋ ํฐ๋ฆฌ ๋๋ฌธ์ด์์ต๋๋ค(๋๋ถ๋ถ PIP ์บ์ฑ ๋ฌธ์ ๋ฑ). ์ค๋ช
ํ๊ฒ ์ต๋๋ค:
ํ๋ก์ ํธ์ user_builds/project/envs/
๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋น๋ํ๋ฉด envs/
๋๋ ํ ๋ฆฌ๊ฐ ๋ค์ ์๋ ์ํ๋ก ๋ค์ ๋น๋ํ ๋๊น์ง๋ง ์๋ํฉ๋๋ค. ๋๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ๋๋ฒ๊น
ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ๋ณด๋๊ณ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ user_builds/project/envs/
๋๋ ํ ๋ฆฌ(๋๋ ๋ด๋ถ์ ๋ฌด์ธ๊ฐ)๋ก ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋์ user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/
๋๋ ํ ๋ฆฌ๊ฐ ํนํ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋์ง ์์๋ด๊ธฐ ์ํด ๋ ๋ง์ ํ
์คํธ๋ฅผ ํ์ต๋๋ค. user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/
๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ๋น๋ํ๋๋ฐ ๋ชจ๋ ๊ฒ์ด ์ ์์ด์์ต๋๋ค. ๋ค์ ๋น๋ํ๋๋ฐ ์คํจํ์ต๋๋ค. user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/
๋๋ ํ ๋ฆฌ๋ฅผ ๋ค์ ํ์ธํ๊ณ source/
๊ฐ ์๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๋ด ๊ธ๋ก๋ฒ ํ์ด์ฌ ์ค์น์ ๊ฐ์ ์ด๋ ๊ทธ๋์ /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/
PIP์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐ user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/
ํ๋ก์ ํธ ํ๊ฒฝ ๋ฐ ์ฌ๊ฑด์์ ๋๋ ํ ๋ฆฌ๋ฅผ. ์ด๊ฒ์ ์ฑ๊ณต์ ์ผ๋ก ๋น๋๋์์ผ๋ฉฐ source/
ํด๋๋ฅผ ๋ณต์ฌํ์ง ์์์ต๋๋ค. ์๋ฒฝํฉ๋๋ค. ์ด์ ๋ฌธ์๊ฐ ๋น๋๋ ๋๋ง๋ค ์ค๋ฅ ์์ด ๋น๋๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฑด๋ฐฐ.
์ด ์๋:
1.์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.ํ์ด์ฌ get-pip.py
@Guru36
์ฌ๋ฌ ๋ฒ ์๋ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ์ด์จ๋ ์ฒ์์ ์ด๊ฒ์ ํด์ผ ๋์์ด ๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋๋ ๊ฐ์ฌํฉ๋๋ค.
๊ฑด๋ฐฐ.
์ด ์๋:
1.์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.ํ์ด์ฌ get-pip.py
๊ฐ์ฌํฉ๋๋ค
์ด์ 0.20 ๋ฆด๋ฆฌ์ค์์ ์ด์ ๋ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ง๊ธ ์ด๊ฒ์ ์กฐ์ฌํ๊ณ ์์ต๋๋ค. ๋๊ตฐ๊ฐ pip 20.0์ผ๋ก ์ฌ์์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค!
๋๋ ๊ฐ์ ๋ฌธ์ ์ ๋ถ๋ช์ณค๋ค.
virtualenv venv
. venv/bin/activate
pip install sqlalchemy pymysql
๊ฒฐ๊ณผ
Traceback (most recent call last):
File "/tmp/test/venv/bin/pip", line 11, in <module>
sys.exit(main())
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
module = importlib.import_module(module_path)
File "/tmp/test/venv/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
from pip._internal.cli.req_command import RequirementCommand
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
from pip._internal.operations.prepare import RequirementPreparer
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
from pip._internal.distributions import (
File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)
๋๊ตฐ๊ฐ pip 20.0์ผ๋ก ์ฌ์์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ ์ ์๋ค๋ฉด
๊ฐ๋จํ ๋งํด์ "ํ์ ์ฌ์ฉํด๋ณด์ญ์์ค"! ์ด๋ฏธ scipy๊ฐ ์ค์น๋ ์์ ๊ฐ์ ํ๊ฒฝ์ scipy๋ฅผ ์ค์นํ๋ ค๊ณ ์๋ํ ๊ฒฐ๊ณผ(์ฆ, pip๊ฐ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ ๊ฒ์ผ๋ก ์์ํจ):
(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install pip==20.0
Looking in indexes: https://pypi.org/simple, http://phabricator.jbarisk.com:8080
Collecting pip==20.0
Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 1.5MB 1.7MB/s
Installing collected packages: pip
Found existing installation: pip 19.3.1
Uninstalling pip-19.3.1:
Successfully uninstalled pip-19.3.1
pipSuccessfully installed pip-20.0
(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install scipy
Traceback (most recent call last):
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/bin/pip", line 8, in <module>
sys.exit(main())
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
module = importlib.import_module(module_path)
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
from pip._internal.cli.req_command import RequirementCommand
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
from pip._internal.operations.prepare import RequirementPreparer
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
from pip._internal.distributions import (
File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'
curl get-pip.py
ํธ๋ฆญ์ด ์๋ํ์ง ์์์ง๋ง ์์คํ
์ ์ค์น๋ "๊ณต์ ์ฝ๋"์ ๋ด venv ๊ฐ์ ์ฐจ์ด์ ์ ์ฐพ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. (์ ๋ ํด๋ฌ์คํฐ์ ์์ต๋๋ค, _so hic sunt leones_...)
--- /usr/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py 2019-10-28 08:47:20.727522000 +0100
+++ /home/dummyuser/ml/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py 2020-01-21 12:55:48.000000000 +0100
@@ -1,4 +1,4 @@
-pip._internal.distributions.source.legacy import SourceDistribution์์
+pip._internal.distributions.source ๊ฐ์ ธ์ค๊ธฐ SourceDistribution์์
pip._internal.distributions.wheel ๊ฐ์ ธ์ค๊ธฐ์์ WheelDistribution
pip._internal.utils.typing์์ ๊ฐ์ ธ์ค๊ธฐ MYPY_CHECK_RUNNING
python -m pip
์ด์ฌํ๋ ๊ฒ์ด ์ ์ํฉ์ ๋์์ด ๋์์ต๋๋ค. https://github.com/ome/jenkins-library-recursivemerge/pull/4/files์์
์คํจ:
(cd build && curl -sfL ${buildInfraUrl} | tar -zxf -)
virtualenv build/venv && build/venv/bin/pip install ${sccPackage}
ํจ์ค:
python -m venv build/venv
. build/venv/bin/activate
python -m pip install ${sccPackage}
@pradyunsg , Fedora 29์์ ๋ค์๊ณผ ๊ฐ์ด ์ฌํํ ์ ์์ต๋๋ค.
rm -rf ~/.local/lib/python3.7
sudo dnf install python3-pip
pip3.7 install -U --user pip
python3.7 -m pip install requests
```
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/lib64/python3.7/runpy.py", 193ํ, _run_module_as_main
"__main__", mod_spec)
ํ์ผ "/usr/lib64/python3.7/runpy.py", 85ํ, _run_code
exec(์ฝ๋, run_globals)
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", 19ํ,
sys.exit(_main())
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", 73ํ, ๋ฉ์ธ
๋ช
๋ น = create_command(cmd_name, isolated=(cmd_args์ "--isolated"))
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", 96ํ, create_command
๋ชจ๋ = importlib.import_module(module_path)
import_module์ ํ์ผ "/usr/lib64/python3.7/importlib/__init__.py", 127ํ
return _bootstrap._gcd_import(์ด๋ฆ[๋ ๋ฒจ:], ํจํค์ง, ๋ ๋ฒจ)
ํ์ผ "
ํ์ผ "
ํ์ผ "
ํ์ผ "
ํ์ผ "
ํ์ผ "
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", 24ํ,
pip._internal.cli.req_command import RequirementCommand์์
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", 20ํ,
pip._internal.operations.prepare import RequirementPreparer์์
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", 16ํ,
pip._internal.distributions์์ ๊ฐ์ ธ์ค๊ธฐ(
ํ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ๋ผ์ธ 1, in
pip._internal.distributions.source์์ SourceDistribution ๊ฐ์ ธ์ค๊ธฐ
ImportError: 'pip._internal.distributions.source'(/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)์์ 'SourceDistribution' ์ด๋ฆ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋ด ๋ฐฐํฌ๊ฐ 19.3.1์์ 20.0์ผ๋ก pip๋ฅผ ์๋ ์ ๊ทธ๋ ์ด๋ํ์ ๋ ๋ฐฉ๊ธ ์ด๊ฒ์ ์ป์์ต๋๋ค.
๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ python -m pip๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๋๋๋ค .
JediKev์ ์์ ์ฌํญ์ ์ด ํด๋๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ๋๋ค.
์ฌ์ดํธ ํจํค์ง/pip/_internal/distributions/source
๋ฌธ์ ๋ฅผ ํด๊ฒฐ
python:3.7-slim
์ปจํ
์ด๋(Debian ๊ธฐ๋ฐ)๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ฐ Python Docker ์ปจํ
์คํธ๋ ์ํฅ์ ๋ฐ์ต๋๋ค.
[32;1m$ docker build --compress -t $REGISTRY_IMAGE_SPARROW .[0;m
#2 [internal] load .dockerignore
#2 transferring context: 493B done
#2 DONE 0.0s
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.22kB done
#1 DONE 0.0s
#3 [internal] load metadata for docker.io/library/python:3.7-slim
#3 DONE 0.8s
#4 [base 1/6] FROM docker.io/library/python:3.7-slim<strong i="7">@sha256</strong>:5886bc9424f2edc...
#4 DONE 0.0s
#5 [internal] load build context
#5 transferring context: 531.72kB 0.0s done
#5 DONE 0.0s
#10 [base 6/6] RUN pip install --upgrade pip
#10 CACHED
#8 [base 4/6] RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards co...
#8 CACHED
#9 [base 5/6] WORKDIR /app
#9 CACHED
#6 [base 2/6] COPY docker-entrypoint.sh /usr/local/bin/
#6 CACHED
#7 [base 3/6] RUN chmod +x /usr/local/bin/docker-entrypoint.sh
#7 CACHED
#11 [requirements 1/2] COPY requirements.txt requirements.txt
#11 CACHED
#12 [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt
#12 0.912 Traceback (most recent call last):
#12 0.912 File "/usr/local/bin/pip", line 8, in <module>
#12 0.912 sys.exit(main())
#12 0.912 File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
#12 0.912 command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
#12 0.912 File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
#12 0.912 module = importlib.import_module(module_path)
#12 0.912 File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
#12 0.912 return _bootstrap._gcd_import(name[level:], package, level)
#12 0.912 File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
#12 0.912 File "<frozen importlib._bootstrap>", line 983, in _find_and_load
#12 0.912 File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
#12 0.912 File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
#12 0.913 File "<frozen importlib._bootstrap_external>", line 728, in exec_module
#12 0.913 File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
#12 0.913 File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
#12 0.913 from pip._internal.cli.req_command import RequirementCommand
#12 0.913 File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
#12 0.913 from pip._internal.operations.prepare import RequirementPreparer
#12 0.913 File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
#12 0.913 from pip._internal.distributions import (
#12 0.913 File "/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
#12 0.913 from pip._internal.distributions.source import SourceDistribution
#12 0.913 ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
#12 ERROR: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
------
> [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
python:3.7.6-alpine
github ์์
์์ ์คํ๋๋ ๊ฒ๊ณผ ๋์ผํ ๊ฒ์ ์ป์์ต๋๋ค.
Dockerfile
์์ ์ด ์ค๋ฅ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.
FROM python:3.7
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
CMD pip --version
๊ทธ๋ฆฌ๊ณ requirements.txst
:
์ด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ์ด ๋ถ์พํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. pip๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ผ์ธ์ ์ ๊ฑฐํ๋ฉด ์ด๋ฏธ์ง๊ฐ ๋น๋๋ฉ๋๋ค.
์ข์, ๋๋ ์ด๊ฒ์ ๋ก์ปฌ์์ ์ฌํํ์ต๋๋ค -- ๊ณง ์์ ์ฌํญ์ด ํฌํจ๋ PR์ ์ ์ถํ ๊ฒ์ ๋๋ค.
./site-packages/pip/_internal/distributions/source ํด๋๋ฅผ ์ ๊ฑฐํ๋ฉด ๋์์ด ๋ฉ๋๋ค!
์, pip ๋ฒ์ 20.0์ด ์ค๋จ๋ฉ๋๋ค.
์, ์ฌ๊ธฐ์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค(pip 20.0).
์, "virtualenv"๋ฅผ ์ฌ์ฉํ์ฌ pip 20.0์ด ์ค๋จ๋ฉ๋๋ค. venv ์์ฑ ๋ช ๋ น
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก pip๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ชจ๋ CI ๋น๋๊ฐ ์คํจํฉ๋๋ค.
์ฐ๋ฆฌ ์ชฝ์์๋ ๋์ผํ ์ค๋ฅ๋ก ์ธํด ๋ชจ๋ ๋น๋๊ฐ ์์๋์์ต๋๋ค.
๋น๋ ๊ณ ์ฅ
pip 19.x๋ก ๋กค๋ฐฑํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? ํจ๊ณผ๊ฐ ์์๊น์?
ํธ์งํ๋ค:
pip install --upgrade "pip==19.3.1"
์ฌ์ ํ ์๋ํฉ๋๋ค.
python 3.7.3 ๋ฐ pip 20.0๊ณผ ๋์ผํฉ๋๋ค.
pip install pip"<20.0"
์์ ์๋ฃจ์
์ด์ง๋ง ์๋ํฉ๋๋ค.
virtualenv
pip
๋ฒ์ ์ 19.3.1(์ด์ )๋ก ์ค์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
์๋ํ๋ ๋น ๋ฅธ ์์ ์
์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.pyํ์ด์ฌ get-pip.py pip==9.0.2
CI ํ์ดํ๋ผ์ธ ์ ์ฅ
๋ฌธ์ ์ฝ๊ธฐ ๋ฌธ์๋ ํ์ฌ ์ด ๋ฌธ์ ๋ก ์ธํด ์ด๋ ค์์ ๊ฒช๊ณ ์์ด ๋ฌธ์ ์์ฑ์ด ์ง์์ ์ผ๋ก ์คํจํฉ๋๋ค.
์๋ง๋ pip ๋ฒ์ ์ 19.3.1(์ด์ )๋ก ์ค์ ํ๋ virtualenv๋ฅผ ์์ฑํ ์ ์์ต๋๊น?
@manutero , virtualenv
๋ช
๋ น์ --no-download
ํ๋๊ทธ๋ ํ๊ฒฝ์ ์์ฑํ ๋ pip
์ ์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
virtualenv๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ 19.x๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ญ์์ค. ์ด๊ฒ์ ๋ด virtualenv์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
virtualenv --no-pip <ENV NAME>
# activate the virtual environment
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.2.2
์ ๋ ฌํ๋ ค๋ฉด ์ด์ ๋ฒ์ ์ ์ ํํด์ผ ํ์ต๋๋ค.
์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
ํ์ด์ฌ get-pip.py pip=19.3.1
python 3.7.6 ๋ฐ pip 20.0๊ณผ ๋์ผํฉ๋๋ค.
ํ ๋ฒ์ -20.0
ํ์ด์ฌ ๋ฒ์ - 3.6
ํ์ผ์ ์๋ ์ค์ ์ฐ์ญ์์ค.
.legacy import SourceDistribution์์
์ด ์คํจ๋ฅผ ๋ณด๊ณ ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด pip/_internal/distributions์ ์์ค/ ํด๋๊ฐ ์์์ ํ์ธํ ์ ์์ต๋๊น?
ํด๋๊ฐ ์๋์ง ํ์ธํ ์ ์์ผ๋ฉด ์ฌ๊ธฐ์ ๋๊ธ์ ๋ฌ์ง ๋ง์ธ์. ์ด ๊ฒ์๋ฌผ์ ๐ ๋ฐ์์ ์ฌ์ฉํ์ธ์. ํด๋น ํด๋๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค. ๐ ๋ฐ์์ ์ฌ์ฉํ์ธ์.
์ฐ๋ถํฌ 19.04์ ๋์ผํ ๋ฌธ์
Successfully installed pip-20.0
Traceback (most recent call last):
File "/home/pippo/.venvs/test_pgm/bin/pip", line 10, in <module>
sys.exit(main())
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
module = importlib.import_module(module_path)
File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
from pip._internal.cli.req_command import RequirementCommand
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
from pip._internal.operations.prepare import RequirementPreparer
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
from pip._internal.distributions import (
File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
pip==19.2.3์ผ๋ก ํ์๋์ง ์์ผ๋ฏ๋ก ์ง๊ธ์ ๋๋๋ ธ์ต๋๋ค.
"๋๋" ์ ๊ณ ๋ ๊ทธ๋งํด์ฃผ์ธ์. @pradyunsg ๋ ์ง๊ธ ์์ ์์ ์ ํ๊ณ ์์ต๋๋ค.
๋ค. ์ด๊ฒ์ ์น๋ ๊ฒ์ ์ด์ ์ผํ์ต๋๋ค.
pipenv ์ฌ์ฉ์๋ฅผ ์ํ ์ค๋ํซ
wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py
pipenv run python get-pip.py pip==19.3
๋น ๋ฅธ ์์ ์ ๊ฒฝ์ฐ,
$(which easy_install) pip==19.3
๋ํ ์ ์๋ํฉ๋๋ค
๋น ๋ฅธ ์์ ์ ๊ฒฝ์ฐ,
$(which easy_install) pip==19.3
๋ํ ์ ์๋ํฉ๋๋ค
๋ชจ๋ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ค์์ ์ด ํ๋๋ง์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
easy_install์ ์ ๊ฑฐํ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๊ถ๊ธํฉ๋๋ค... :) - ๊ทธ๋ฌ๋ฉด pip ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น์?
pip install --upgrade pip
๋ฅผ pip install --upgrade pip"<20.0"
๊ต์ฒดํ๋ ์ค์
๋๋ค.
์ ๋ ฌํ๋ ค๋ฉด ์ด์ ๋ฒ์ ์ ์ ํํด์ผ ํ์ต๋๋ค.
์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
ํ์ด์ฌ get-pip.py pip=19.3.1
python3 get-pip.py pip==19.3.1์ด์ด์ผ ํฉ๋๋ค.
pip install --upgrade pip
๋ฅผpip install --upgrade pip"<20.0"
๊ต์ฒดํ๋ ์ค์ ๋๋ค.
๋์ปค์์ ๋์์ฃผ์ธ์
์คํ pip install --upgrade pip"<20.0"
@PabloCastellano ๊ฐ์ฌํฉ๋๋ค! ๋๋ ๋ด ์ฌ์ฅ ๋ฐ๋์๊ฐ ๋ ์ด์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ ์ฌ๊ธฐ์์ ๋๊ธ์ ๋ฌด์ํ๊ณ ์์ต๋๋ค. :)
bugfix ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋์์ด ๋์๋ค๋ฉด ์ด ๊ฒ์๋ฌผ์ ๐๋ฅผ ์ฌ์ฉํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์๊ฒฌ์ ์์ฑํ์ญ์์ค.
XD
๋๋ ๋ด ์ฌ์ฅ ๋ฐ๋์๊ฐ ๋ ์ด์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. :)
bugfix ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค์์ต๋๋ค.
@pradyunsg ๋น์ ์ ๋ฐฉ๊ธ ๋ด ๊ฒ์ ๋ฎ์ท์ต๋๋ค. ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@SergeyLadutko :
pip install --upgrade pip
๋ฅผpip install --upgrade pip"<20.0"
๊ต์ฒดํ๋ ์ค์ ๋๋ค.๋์ปค์์ ๋์์ฃผ์ธ์
์คํ pip install --upgrade pip"<20.0"
pip install --upgrade pip==19.3.1
์๋
์ข์, ๋ด ๋น๋๋ฅผ ๋ค์ ์คํํ๊ฒ ํด์ค
@pradyunsg ๋น ๋ฅธ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. <3 ๊ถ๊ธํ์ ๋ถ๋ค์ ์ํด ์ด ์์ ์ฌํญ์ด CircleCI ์์ ๋ด์์ ์ ์ฉ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
get-pip.py๊ฐ ์์ง ์ ๋ฐ์ดํธ๋์ง ์์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ์๋ํ๋ฉด ์ด๊ฒ์ ํ ์คํธํ ๋ get-pip์ ๋ํ ์์ฒด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค. :)
๋ช ๋ถ ์์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
ํ์ธํ ์ ์์ต๋๋ค. pip==20.0.1
์ ์๋ํฉ๋๋ค
@pradyunsg ์์ผ๋ก ๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์๋๋ก CI ๊ฐ์ ์ฌํญ์ด ์์ต๋๊น? ๋์ปค ์ปจํ ์ด๋๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ด์ ๋ํ PR์ ์๋ฝํ์๊ฒ ์ต๋๊น?
get-pip.py๊ฐ ์์ง ์ ๋ฐ์ดํธ๋์ง ์์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ์๋ํ๋ฉด ์ด๊ฒ์ ํ ์คํธํ ๋ get-pip์ ๋ํ ์์ฒด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค๋จํ๊ธฐ ๋๋ฌธ์ ๋๋ค. :)
๋ช ๋ถ ์์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
:) ์ธ์ ์ข์์ง ์๋ ค์ฃผ์ธ์.
๋ช ๋ถ ์์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
์๊ฒ ์ต๋๋ค. ์ง๊ธ ํธ์ํ์ต๋๋ค. ์ง๊ธ์ฏค์ด๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด bootstrap.pypa.io๋ก ์ ํ๋์์ ๊ฒ์ ๋๋ค. ์๋๋ฉด ์ ๋ง ๊ณง ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ๋น๋๋ ์ด์ get-pip.py๋ก ์ ๋ฌ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค @pradyung
pip 20.0.1์ด ์ ๋๋ก ์๋ํฉ๋๋ค. @pradyunsg ๊ฐ์ฌ
์ด์ ๋ ์ด์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋ ์๋ก์ด pip
์ด ์ค์น๋์์์ ํ์ธํ ์ ์์ต๋๋ค. @pradyunsg ๊ฐ์ฌ
@pradyunsg ๊ฐ์ฌ
@pradyunsg ๊ฐ์ฌํฉ๋๋ค! ๋ง์ด, ๋ ๋ง์ด
๋น ๋ฅธ ์์ ์ ์ํด @pradyunsg ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๐
๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํด @pradyunsg ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
source
๋ชจ๋ ๋๋ ํ ๋ฆฌ์ pip/_internal/distributions
๊ฒฝ๋ก์ source.py
๊ฐ ์๊ณ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์๋ง์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
pip/_internal/distributions/__init__.py
์ ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ธ์ด ์์ต๋๋ค.
from pip._internal.distributions.source import SourceDistribution # <-- here
from pip._internal.distributions.wheel import WheelDistribution
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
๊ทธ๋ฌ๋ ๊ฑฐ๊ธฐ์๋ __init__.py
์๋ source
๋๋ ํ ๋ฆฌ๋ ์์ต๋๋ค.
env ๎ฐ ~/.../_internal/distributions ๎ฐ ls -ltr
total 32
-rw-r--r-- 1 user xxx 1294 Jan 21 18:02 wheel.py
-rw-r--r-- 1 user xxx 760 Jan 21 18:02 installed.py
-rw-r--r-- 1 user xxx 1425 Jan 21 18:02 base.py
drwxr-xr-x 3 user xxx 4096 Jan 21 18:02 source
-rw-r--r-- 1 user xxx 4201 Jan 21 18:19 source.py
-rw-r--r-- 1 user xxx 961 Jan 21 18:26 __init__.py
drwxr-xr-x 2 user xxx 4096 Jan 21 18:26 __pycache__
๋ฐ๋ผ์ ํด๋น ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์คํจํฉ๋๋ค. source.py
์ _source.py
๋ก ๋ฐ๊พธ๊ณ __init__.py
์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ from pip._internal.distributions._source import SourceDistribution
ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
@pradyunsg ๋น ๋ฅธ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. <3
์ฌ๊ธฐ์ ์์ ์ฌํญ์ ๋ํ ํ์์ ์ธ ์ ํ์ ๋์ํ์ต๋๋ค!
@pradyunsg ๊ฐ์ฌํฉ๋๋ค
์์ ๊ฐ์ ์ค๋ฅ์
๋๋ค.
ํ์ด์ฌ ๋ฒ์ : python-3.7.6
์ด์ ์ฒด์ : ์๋์ฐ
PIP 19.3.1๋ก ์ด๋ํ ํ ์๋
์ด์ ์ ์๋ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฒ๊ทธ์ ํน์ฑ์ ๊ณ ๋ คํ ๋ PYPA์์ 20.0 ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ฑฐํด ์ฃผ์๊ฒ ์ต๋๊น? https://pypi.org/project/pip/#history
๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ฏธ๋์ ์ ์ฌํ ํ๊ท๋ฅผ ํผํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ ๋๋ค.
ํ์์ ๋ํด ๋ชจ๋์๊ฒ ์ฃ์กํฉ๋๋ค. ์ด ํ์์ ์์ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์์ ์ฐ๋ฆฌ์ ํ๋ ฅํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@xavfernandez๋ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ ์ด์ ๋ฅผ ํ์ ํ์ผ๋ฉฐ ํฅํ ์ ์ฌํ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ ๊ฒ์ ๋๋ค. #7624
ํ๋ฅญํฉ๋๋ค. ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅธ ์ฒ๋ฆฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์๋
ํ์ธ์ 20.0์์ ๋ฉ์ท์ต๋๋ค
๋ด๊ฐ ์๋ํ ๋ชจ๋ ๋ช
๋ น์ 'SourceDistribution'์ ๋ํ ์ด ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
pip install --upgrade pip
pip install pip "<20.0"
pip install --upgrade "pip==19.3.1"
๋๋ ์ ๊ฑฐํ๋ ๋ฐ ์ง์ณค๋ค :
pip uninstall pip
python -m pip uninstall pip setuptools
๋๊ตฌ๋ ์ง pip๋ฅผ ์ ๊ฑฐํ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์์ต๋๊น?
์ฐ๋ถํฌ 18.04.3 LTS
ํ์ด์ฌ 3.6.9
virtualenv์์ ์คํ
์๋ ํ์ธ์ @CharrierCoop์ ๋๋ค! get-pip.py๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ pip 20.0.1์ ์ค์นํ ์ ์์ด์ผ ํฉ๋๋ค.
์๋ฒฝํ !!
@pradyunsg ๊ฐ์ฌํฉ๋๋ค
PYPA์์ 20.0 ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ฑฐํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋์. ์ญ์ ํ์ง ์์ต๋๋ค. ๊นจ์ง ๋ฆด๋ฆฌ์ค๋ฅผ "๋์ด๋น๊ธฐ๊ธฐ" ์ํ ํ์ค ์ง์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. PyPI๊ฐ ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ฉด ์ด ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ฑฐํ ๊ฒ์ ๋๋ค(๊ทธ๋๊น์ง ๊ด์ฌ ์๋ ์ฌ๋์ด ์๋ ๊ฒฝ์ฐ).
์์ธํ ๋ด์ฉ์ https://www.python.org/dev/peps/pep-0592/#motivation ์ ์ฐธ์กฐํ์ธ์.
sudo python get-pip.py pip==19.3.1"
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
sudo python get-pip.py pip==19.3.1"
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค
sudo ํ์ด์ฌ get-pip.py pip==19.3.1"
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
@pradyunsg๊ฐ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์ @CharrierCoop์ ๋๋ค! get-pip.py๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ pip 20.0.1์ ์ค์นํ ์ ์์ด์ผ ํฉ๋๋ค.
Raspberry Pi 4(Python 3.7.3, pip ๋ฒ์ - 20.0 ๋ฐ OS - Raspbian Buster Lite)์์ ๋์ผํ ์์
์ ์๋ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค.
์ค๋ฅ: pi p ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ฒ์ ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ค๋ฅ: pip์ ๋ํด ์ผ์นํ๋ ๋ถํฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
@Gilf641 ์ ๋ฌธ์ ๋ฅผ
๋๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ํจ๊ณผ๊ฐ ์๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ง๊ธ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด์ ์ ์ ์ถ๋ ์ค๋ณต ํญ๋ชฉ(pip 20.0์ ๊ฒฝ์ฐ 1์ 21์ผ ์ดํ)์ ์ฐพ์๋ณด๊ณ ์ค๋ณต ํญ๋ชฉ์ด ์์ผ๋ฉด ์ ๋ฌธ์ ๋ฅผ ์ ์ถํ์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@PabloCastellano ๊ฐ์ฌํฉ๋๋ค! ๋๋ ๋ด ์ฌ์ฅ ๋ฐ๋์๊ฐ ๋ ์ด์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ ์ฌ๊ธฐ์์ ๋๊ธ์ ๋ฌด์ํ๊ณ ์์ต๋๋ค. :)
bugfix ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋์์ด ๋์๋ค๋ฉด ์ด ๊ฒ์๋ฌผ์ ๐๋ฅผ ์ฌ์ฉํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์๊ฒฌ์ ์์ฑํ์ญ์์ค.