본문 바로가기

개발

[python]conda와 pip 이용한 python package 관리

python은 다양한 package를 설치해서 이용할 수 있는 확장성 덕분에 많은 인기를 끌고 있습니다. 

이러한 package들의 설치와 관리를 도와주는 고마운 프로그램들로 conda와 pip가 있습니다. 

 

우선, 
conda는 Anaconda에서 제공하고 있는 package(conda-forge channel 등)를 활용할 수 있으며,
package들 간의 의존성을 고려하며 설치되거나 제거되는 등 사용하기 편한 장점이 있습니다. 
(하지만 그래서 설치 가능한 package가 상대적으로 적습니다..) 

# conda 이용한 설치 
conda install ooo(package 이름)
conda install ooo(package 이름)==1.0.1(특정 버전 설치 시)

# conda 이용한 설치 목록 확인
conda list

# conda 이용한 업데이트
conda update ooo(package 이름) 
conda update --all

# conda 이용한 삭제
conda remove ooo(package 이름)

 

한편, 
pip는 PyPI(Python Package Index)를 통해 제공되는 package(PyPI channel)를 활용할 수 있으며, 
python에서 제공하는 최신의 다양한 package를 이용할 수 있으나..
package 의존성 등을 고려하여 설치가 필요할 수 있습니다. 

# pip 이용한 설치 
pip install ooo(package 이름)
pip install ooo(package 이름)==1.0.1(특정 버전 설치 시)

# pip 이용한 설치 목록 확인
pip list

# pip 이용한 업데이트
pip install --upgrade ooo(package 이름) 

# pip 이용한 삭제
pip uninstall ooo(package 이름)

# pip 이용한 업데이트 시.. 
pip list --outdated
pip freeze > req.txt
pip install --upgrade -r req.txt

# pip를 업데이트하기.. 
python.exe -m pip install --upgrade pip

 

pip를 이용한 package 업데이트 방법으로 아래와 같은 방법도 있습니다. 

# package 확인 - 1
import pkg_resources, pandas
installed_packages = pkg_resources.working_set
installed_packages_set = sorted(
		['%s==%s' % (pkg.key, pkg.version) for pkg in installed_packages])
out_installed_packages_set = pandas.DataFrame(installed_packages_set)
print(out_installed_packages_set)

# package 확인 - 2
import importlib_metadata, pandas
installed_packages = importlib_metadata.distributions()
# for package in installed_packages:
#	name = package.metadata['Name']; version = package.version
#	license = package.metadata['License']
installed_packages_set = sorted(
		['%s==%s' % (pkg.metadata['Name'], pkg.version) 
        for pkg in installed_packages if(pkg.metadata.get('Name', None) != None)])
out_installed_packages_set = pandas.DataFrame(installed_packages_set)
print(out_installed_packages_set)

for package in installed_packages:
	name = package.metadata["Name"]
	version = package.version
	license = package.metadata["License"]
	print(name, version, license)


# package upgrade 
import pip, subprocess
for package in installed_packages_set:
	str_upgrade_call = 'pip install --upgrade ' + package[:package.find('==')]
	print(str_upgrade_call)
	subprocess.run(str_upgrade_call, shell=True) # subprocess.call

 

 

반응형