# 출력
using workdir ...
pre-build: cleaning dist
--> .$ .../bin/python3.13 -m build
built: dist/my_package-0.1.0-py3-none-any.whl 3kb
built: dist/my_package-0.1.0.tar.gz 2kb
file_upload of my_package-0.1.0-py3-none-any.whl to http://{HOST}:{PORT}/{user}/{index}/
file_upload of my_package-0.1.0.tar.gz to http://{HOST}:{PORT}/{user}/{index}/
🧑💻 또는 이미 빌드된 특정 wheel 파일을 직접 업로드할 수도 있다.
이는, 외부에서 wheel 파일을 가져와 폐쇄망 내부의 devpi-server에 업로드할 때 유용하다.
1
2
cd my-package
devpi upload dist/*.whl
1
2
# 출력
file_upload of my_package-0.1.0-py3-none-any.whl to http://{HOST}:{PORT}/{user}/{index}
업로드 확인
🧑💻🤖 devpi list 명령어로 “직접 추가된” 패키지를 확인할 수 있다.
1
devpi list
1
2
# 출력
my-package
🧑💻🤖 devpi list <패키지이름> 으로 패키지에 대한 상세한 내용을 확인할 수 있다.
1
devpi list my-package
1
2
3
# 출력
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0.tar.gz
🧑💻🤖 새로운 버전이 업로드되었다면, 버전별로도 확인 가능하다.
1
devpi list my-package
1
2
3
4
5
# 출력
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0.tar.gz
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0.tar.gz
(참고) 릴리즈 업로드시 파일 형식 지정
🧑💻 업로드할 릴리즈 파일 형식을 지정할 수 있다.
예를 들어 아래와 같이 지정하면, wheel 파일, 소스 배포 파일이 생성되어 인덱스에 업로드된다.
1
devpi upload --formats=bdist_wheel,sdist.tgz
업로드된 릴리즈를 설치, 사용해보기
테스트 가상환경 생성 및 활성화
🧑💻 업로드된 릴리즈를 설치하기 위해, 격리된 가상환경을 생성하고, 생성된 가상환경을 활성화한다.
# 출력
Looking in indexes: http://l{HOST}:{PORT}/{user}/{index}
Collecting my-package
...
Successfully installed annotated-types-0.7.0 my-package-0.2.0 ...
import 및 사용 테스트
🧑💻 설치한 패키지를 정상적으로 import 하고 사용할 수 있는지 테스트한다.
1
2
# 파이썬 실행 (release-test 가상환경)
python
1
2
3
4
5
6
7
8
# 파이썬 스크립트 내
from calc import Operands, add, sub, mul, div
a = 10
b = 2
print(add(Operands(a=a, b=b)))
print(sub(Operands(a=a, b=b)))
print(mul(Operands(a=a, b=b)))
print(div(Operands(a=a, b=b)))
1
2
3
4
5
# 출력
12
8
20
5.0
릴리즈(또는 프로젝트) 제거
목적
실수로 업로드 된 릴리즈 제거
보안적 문제나 심각한 결함이 있는 릴리즈 제거
전제 조건
휘발성(volatile=True) 인 인덱스에서만 릴리즈 제거가 가능
준비
🧑💻🤖 제거할 릴리즈가 위치한 인덱스를 지정한다.
1
devpi use http://{HOST}:{PORT}/{user}/{index}
🧑💻🤖 릴리즈를 제거할 수 있는 유효한 권한을 가진 계정으로 로그인한다.
1
devpi login {user_name}--password={password}
릴리즈 제거
🧑💻🤖 릴리즈를 확인해본다.
1
devpi list my-package
1
2
3
4
5
6
7
# 출력 (총 3개의 버전이 존재)
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.3.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.3.0.tar.gz
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0.tar.gz
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0.tar.gz
🧑💻🤖 devpi remove 명령어를 통해 릴리즈를 제거한다.
1
devpi remove -y my-package==0.2.0
1
2
3
4
5
6
7
8
# 출력
About to remove the following releases and distributions
version: 0.2.0
- http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0-py3-none-any.whl
- http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.2.0.tar.gz
Are you sure (yes/no)? yes(autoset from -y option)
deleting release 0.2.0 of my-package
🧑💻🤖 결과 확인
1
devpi list my-package
1
2
3
4
5
# 출력 -- 0.2.0 버전이 제거됨
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.3.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.3.0.tar.gz
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0-py3-none-any.whl
http://{HOST}:{PORT}/{user}/{index}/+f/.../my_package-0.1.0.tar.gz
프로젝트 제거
🧑💻🤖 동일하게 devpi remove 명령어를 사용하되, 버전을 지정하지 않으면 프로젝트 전체가 제거된다.
1
devpi remove my-package
결과 확인
1
devpi list my-package
1
2
# 출력 없음# 또는, bases 가 지정된 경우 출력이 나올 수도 있으나 원하는대로 제거된 건 맞음
댓글 남기기