말에서 설치 방식/접두사를 결정, 내가 setup.py 가진 다음 라인 파이썬 패키지가 :파이썬 패키지 코드
...
packages=['mypkg'],
data_files=[
('lib/mypkg/', [...]),
('share/mypkg/', [...]),
]
...
나는 여러 실행 헬퍼 $(prefix)/lib/mypkg
및 패키지 관련 데이터 파일에 설치되어야하는 가정 $(prefix)/share/mypkg
에 설치해야합니다. 요점은 $(prefix)
은 다른 배포판마다 다를 수 있다는 것입니다. 예를 들어 centos 시스템에서는 prefix=/usr
이고, debian 시스템에서는 기본적으로 prefix=/usr/local
입니다. 또한 사용자 정의 접두사 또는 심지어 사용자 정의 설치 구성표를 알고 setup.py 매개 변수로 제공 될 수 있습니다.
그래서 내 패키지의 파이썬 코드를 사용하여 패키지 데이터가 설치된 위치를 엄격하게 결정할 수 있기를 원합니다. 순간 나는 해결책 다음 사용하고, 그러나 그것은 나에게 서투른 보인다 나는 그것이 사용자 정의 설치 방식의 경우에는 비효율적 일 것입니다 가정 :
# mypkg/__init__.py
import os
initpath = __path__[0]
while True:
datapath, _ = os.path.split(initpath)
if datapath == initpath:
break
initpath, datapath = datapath, os.path.join(datapath, 'share', 'mypkg')
if os.path.exists(datapath):
print datapath
이 그것을 할 수있는 더 좋은 방법이 있나요?
import sysconfig
import pkg_resources
self.install_scheme = None
distribution = pkg_resources.get_distribution('mypkg')
lib_path = distribution.location
schemes = sysconfig.get_scheme_names()
for s in schemes:
p = sysconfig.get_path('purelib', s)
if p == lib_path:
self.install_scheme = s
이 패키지 메타 데이터의이 만들어 pip
를 통해 설치 패키지 작동 :