나는 빌드 스크립트를 the wonderful Waf tool에 기반하여 재 작성하는 중입니다. (나는 연령대에 따라 SCons를 사용했지만 그 중 은으로 너무 느립니다.)Python 확장 모듈을 egg loadable로 설치하지 않고 패키지로 만들려면 어떻게해야합니까?
어쨌든, 나는 다음과 같은 상황에 충돌했고 나는 그것에 해결책을 찾을 수 없습니다 : 내가 이전에 내장 된 계란 파일의 수에 의존하는 제품이
- .
- 빌드 프로세스의 일부로 PyInstaller을 사용하여 제품을 패키징하려고합니다.
- 먼저 종속성을 빌드합니다.
- 다음으로 PyInstaller를 실행하여 내가 만든 달걀에 달린 제품을 포장하고 싶습니다. PyInstaller가 패키징 프로세스의 일부로 해당 egg 파일을로드 할 수 있어야합니다.
이 쉽게 소리 : 당신이 PYTHONPATH
이 있어야 할 어떤 운동까지 제대로 변수를 설정 sys.environ
의 사본을 구성하고 ENV 인수로 이전에 구성된 환경을 통과 subprocess.Popen
를 사용하여 pyInstaller 중에 스크립트를 호출합니다.
PYTHONPATH
만 설정하면 추가 할 달걀이 zipsafe로 패키지 된 확장 모듈 인 경우 충분하지 않은 것입니다. 이 경우 임베디드 라이브러리를 가져올 수 없습니다.
달걀 압축을 풀면 (디렉토리 이름을 .egg로 바꿉니다.) 더 이상 설정하지 않고 가져올 수 있지만이 경우 원하는 것은 아닙니다.
또한 수행하여 서브 쉘에서 가져올 계란을 얻을 수있는 다음
- 가 가져올 계란 (안 계란 자체의 경로) 이 포함 된 디렉토리로
- 파이썬 셸을로드하고
pkg_resources.require
을 사용하여 알을 찾습니다.
PYTHONPATH
설정
정상적으로 완료되면 계란이 정상적으로로드됩니다. 다시 말하지만, 이것은 내가 달걀을 가져올 준비가되어있는 방식으로 파이썬 쉘을 돌릴 수 있어야하기 때문에 실용적이지 않습니다.
더티 옵션은 실제 대상 스크립트를 호출하기 전에 위의 조치를 취한 래퍼 스크립트를 출력하는 것이지만 잘못된 작업 인 것처럼 보입니다. 더 나은 방법이 있어야합니다.
그것 좋은 답변, 그리고 나는 몇 곳에서 VirtualEnv를 사용하지만, 여기서는 하나의 스크립트를 호출하기위한 목적으로 전체 가상 환경을 설정하고 싶지 않습니다. 즉, 비슷한 문제가있는 다른 사람을 도울 수 있습니다. – jkp