2016-07-29 9 views
1

setup.py에서 Python 패키지는 몇 가지 정보를 제공합니다. 이 정보는 계란의 PKG_INFO 파일에서 찾을 수 있습니다.Python 배포 URL을 얻으려면 어떻게해야합니까?

패키지를 설치 한 후에 어떻게 액세스 할 수 있습니까? 예를 들어

, 나는 다음과 같은 모듈이있는 경우 :

setup(name='myproject', 
     version='1.2.0.dev0', 
     description='Demo of a setup.py file.', 
     long_description=README + "\n\n" + CHANGELOG + "\n\n" + CONTRIBUTORS, 
     license='Apache License (2.0)', 
     classifiers=[ 
      "Programming Language :: Python", 
      "Programming Language :: Python :: 2", 
      "Programming Language :: Python :: 2.7", 
      "Programming Language :: Python :: 3", 
      "Programming Language :: Python :: 3.4", 
      "Programming Language :: Python :: 3.5", 
      "Programming Language :: Python :: Implementation :: CPython", 
      "Programming Language :: Python :: Implementation :: PyPy", 
      "Topic :: Internet :: WWW/HTTP", 
      "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", 
      "License :: OSI Approved :: Apache Software License" 
     ], 
     keywords="web sync json storage services", 
     url='https://github.com/Kinto/kinto') 

하는 방법은 setup.py에서 제공하는 정보를 다시 얻기 위해 파이썬을 사용할 수 있습니까?

그 비슷한 생각했다 :

import pkg_resource 
url = pkg_resource.get_distribution(__package__).url 

어떤 생각을?

+0

는 http://stackoverflow.com/questions/20683118/how-to-access-python-package-metadata의 중복 것 같다 -from-within-the-python-console – Natim

답변

1

당신이 pkg_resources으로 그렇게 할 수있는 전용 API 분명히 있습니다 :

import pkg_resources 
d = pkg_resources.get_distribution(__package__) 
metadata = d._get_metadata(d.PKG_INFO) 
home_page = [m for m in metadata if m.startswith('Home-page:')] 
url = home_page[0].split(':', 1)[1].strip() 

내가 원하는 우리가 더 잘 할 수있는가.

0

더 잘할 수 있기를 바랍니다.

실은 가능합니다. 민간 방법을 사용할 필요가 없습니다, 우리는 할 수 있습니다

import pkg_resources 
import distutils 
import io 

distribution = pkg_resources.get_distribution(__package__) 
metadata_str = distribution.get_metadata(distribution.PKG_INFO) 
metadata_obj = distutils.dist.DistributionMetadata() 
metadata_obj.read_pkg_file(io.StringIO(metadata_str)) 
url = metadata_obj.url