2016-09-12 2 views
2

나는 다음과 같은 폴더 트리와 파이썬 패키지를 구축하고 있다고 가정 설치 한 디렉토리 얻는 방법 :파이썬 3.x를 - 사용자가 패키지

main 
|-- setup.py 
|-- the_package 
    |--globar_vars.py 
    |--the_main_script.py 

어쨌든 사용자가 수행하는 것처럼, 설치하기 :

PIP 사용
sudo python setup.py install 
python setup.py install --user 
python setup.py install --prefix=/usr/local 

또는 아니라 :

pip install 'SomeProject' 

내가 원하는 패키지가 O를 저장 설치되어있는 폴더 N 어떤 변수에 global_vars.py, 예 : 그것을 얻기 위해 어떻게든지

globarl_vars.py 
#!/usr/bin/env python3 

user_installed_pkg = '/some/path/where/the/package/was/installed' 

있다

? 미리 감사드립니다. 당신의 SomeProject 패키지를 가정

답변

0
import wtv_module 
print(wtv_module.__file__) 

import os 
print(os.path.dirname(wtv_module.__file__)) 
+0

이 옵션을 고려하고있었습니다. 그러나이 방법은 패키지가 이미 설치된 경우에만 작동합니다. 제 말은 대답이 문제의 절반을 해결한다는 것입니다. 패키지를 설치 한 경로를 얻었으므로 (이미 설치되어있는) global_var.py 파일에 해당 경로를 변수에 할당해야합니다. –

+0

좋아, 작품을 나눌 수도 있습니다 해결책 일 수 있습니다;) –

1

well-formed Python package (setuptools 사용하여 수행 할 수있는), 사용자가 파생 할 수있는 위치는 단순히 정보를 얻을 수 setuptools 패키지에서 제공하는 pkg_resources 모듈을 사용합니다. 예를 들면 :

>>> from pkg_resources import working_set 
>>> from pkg_resources import Requirement 
>>> working_set.find(Requirement.parse('requests')) 
requests 2.2.1 (/usr/lib/python3/dist-packages) 
>>> working_set.find(Requirement.parse('requests')).location 
'/usr/lib/python3/dist-packages' 

그러나 경로가 표준 파일 시스템 도구를 통해 직접 사용 가능한 경로 일 수 없음을 의미 달걀 안에 뭔가가 될 수 돌아왔다. 이 경우 일반적으로 Resource manager API을 사용하여 리소스에 액세스하려고합니다.

>>> import pkg_resources 
>>> api_src = pkg_resources.resource_string('requests', 'api.py') 
>>> api_src[:25] 
b'# -*- coding: utf-8 -*-\n\n' 
관련 문제