이는 Python에서 다양한 Windows API에 대한 액세스를 제공하는 Python for Win32(pywin32) 확장에 대한 추가 정보입니다.
최근 주목할만한 변경 사항은 CHANGES.txt를 참조하세요.
문서는 길고 슬픈 이야기이지만 이제 설치 프로그램과 함께 제공되는 도움말 파일의 온라인 버전이 있습니다(@ofek에게 감사드립니다!). 그 중 상당수는 매우 오래된 것이지만 일부는 자동으로 생성된 최신 정보입니다. 문서를 푸는 데 도움이 되었으면 좋겠습니다!
pywin32의 모든 버그(또는 의심되는 버그)에 대한 문제를 자유롭게 공개하세요. 모든 버그나 기능에 대한 풀 요청도 환영합니다.
그러나 일반적인 지원 요청이나 이 패키지의 모듈을 사용하는 문제나 질문에 대해서는 github 문제를 열지 마십시오 . 문제는 닫힐 것입니다. 이러한 문제에 대해서는 python-win32 메일링 리스트로 이메일을 보내주세요. 게시하기 전에 리스트에 가입해야 한다는 점에 유의하세요.
바이너리 릴리스는 더 이상 지원되지 않습니다.
빌드 306은 .exe 설치 프로그램이 포함된 마지막 버전입니다. 정말 사용하면 안 되지만 꼭 필요한 경우 여기에서 찾아보세요.
pip를 통해 pywin32를 설치해야 합니다. 예:
python -m pip install --upgrade pywin32
가상 환경 내에서 실행하면 안되는 설치 후 스크립트(아래 참조)가 있습니다. "전역" 설치에서만 실행되어야 합니다.
출시되지 않은 변경 사항의 경우 github 작업으로 만든 빌드를 다운로드할 수 있습니다. main
브랜치에서 "워크플로"를 선택하고 해당 "아티팩트"를 다운로드하세요.
가상 환경 외부에서 COM 개체, 서비스 등을 설치하려고 할 수 있습니다. 다음을 실행하여 이를 수행할 수 있습니다.
python Scripts/pywin32_postinstall.py -install
Python 설치 루트에서.
일반 권한으로 이 작업을 수행하면 사용자에게 전역적으로 적용됩니다(몇 가지 파일이 Python 설치 루트에 복사되고 HKCU에 일부 변경 사항이 적용됩니다). 관리자 권한 프로세스에서 이를 실행하면 컴퓨터에 전역적으로 적용됩니다(파일은 System32에 복사되고 HKLM은 변경됩니다).
서비스로 실행하려면 관리자 권한 명령 프롬프트에서 전역적으로 pywin32를 설치하고 싶을 것입니다. 위를 참조하세요.
또한 서비스를 실행하는 사용자가 설치에 액세스할 수 있고 pywintypesXX.dll
및 pythonXX.dll
로드할 수 있는 위치에 Python이 설치되어 있는지 확인해야 합니다. 특히 LocalSystem
계정은 일반적으로 로컬 %USER%
디렉터리 구조에 액세스할 수 없습니다.
업그레이드 시 다음과 같은 문제가 발생하는 경우:
The specified procedure could not be found
Entry-point not found
일반적으로 다음 두 가지 중 하나를 의미합니다.
이전에 설치 후 스크립트가 실행된 설치를 업그레이드했습니다. 따라서 다시 실행해야 합니다.
python Scripts/pywin32_postinstall.py -install
이렇게 하면 오래된 충돌 설치를 정리하기 위한 작은 시도가 이루어집니다.
시스템에 다른 pywin32 DLL이 설치되어 있지만 새 DLL과 다른 위치에 있습니다. 이는 pywin32가 미리 제공되는 환경(예: anaconda?)에서 가끔 발생합니다.
여기서 가능한 해결책은 다음과 같습니다.
pywintypesXX.dll
및 pythoncomXX.dll
의 다른 모든 복사본을 찾아 제거합니다(여기서 XX
는 Python 버전입니다 - 예: "39"). Visual Studio 2019를 설치하고(나중에 작동할 수도 있지만 옵션이 다를 수 있음) 설치하는 버전에 대한 빌드 환경의 지침을 따르세요.
(무료 컴파일러도 작동할 수 있지만 아직 테스트되지 않았습니다. 경험을 알려주세요!)
setup.py
표준 distutils 빌드 스크립트이므로 아마도 다음을 원할 것입니다.
python setup.py install
또는
python setup.py --help
일부 모듈을 빌드하려면 모호한 SDK가 필요합니다. setup.py
성공하고 빌드에 실패한 이유를 친절하게 알려주어야 합니다. 실제로 구성에 따라 빌드가 실패하는 경우 문제를 열어주세요.
새 릴리스를 만들 때 다음 단계가 수행됩니다. 이는 주로 @mhammond가 수행할 작업을 잊지 않도록 체크리스트를 작성하는 것입니다. :)
빌드 307부터 릴리스 프로세스는 Github 작업으로 생성된 아티팩트를 기반으로 합니다.
CHANGES.txt에 주목할 만한 모든 항목이 있는지 확인하세요. 곧 출시될 빌드와 날짜를 반영하도록 헤더를 업데이트하고 커밋합니다.
setup.py를 새 빌드 번호로 업데이트합니다. 출시되지 않은 다음 버전에 대한 새 제목 섹션을 포함하려면 CHANGES.txt를 업데이트하세요. (즉, 새로운 비어 있는 "아직 출시되지 않은 빌드 XXX에 출시됨" 섹션)
이러한 변경 사항을 github에 푸시하고 작업이 완료될 때까지 기다린 후 해당 실행에서 아티팩트를 다운로드하세요.
.whl 아티팩트를 pypi에 업로드합니다. 잘못된 README.md
로 인해 거부될 수 있으므로 태그를 푸시하기 전에 이 작업을 수행합니다. py -3.? -m twine upload dist/*XXX*.whl
.
릴리스에 대한 새 git 태그를 만듭니다.
향후 테스트 빌드가 실제 릴리스로 오인되지 않도록 setup.py를 새 빌드 번호 + ".1"(예: 123.1)로 업데이트하세요.
태그(예: git push --tags
)를 포함하여 모든 것이 github에 푸시되었는지 확인하세요.
python-win32로 메일 보내기
이는 로컬 개발 환경을 사용하여 빌드를 생성할 때 사용된 이전 프로세스입니다. 빌드 306은 이 프로세스를 통해 마지막으로 릴리스되었습니다.
CHANGES.txt에 주목할 만한 모든 항목이 있는지 확인하세요. 곧 출시될 빌드와 날짜를 반영하도록 헤더를 업데이트하고 커밋합니다.
setup.py를 새 빌드 번호로 업데이트합니다.
make_all.bat
실행하고 영원히 기다렸다가 아티팩트를 테스트하십시오.
.whl 아티팩트를 pypi에 업로드합니다. 잘못된 README.md
로 인해 거부될 수 있으므로 태그를 푸시하기 전에 이 작업을 수행합니다. py -3.? -m twine upload dist/*XXX*.whl
.
setup.py를 커밋하고(새 빌드 번호가 저장소에 있음) 새 git 태그를 만듭니다.
.exe 설치 프로그램을 github에 업로드합니다.
향후 테스트 빌드가 실제 릴리스로 오인되지 않도록 setup.py를 새 빌드 번호 + ".1"(예: 123.1)로 업데이트하세요.
태그(예: git push --tags
)를 포함하여 모든 것이 github에 푸시되었는지 확인하세요.
python-win32로 메일 보내기