2012-08-10 2 views
2

은 다음과 같습니다python 2.7에서 기본값 대신 사용자 정의 json 모듈을 가져 오는 방법은 무엇입니까? 내 디렉토리 구조를 가정

C:\Scripts\myscript.py 
C:\Scripts\customjson\json.py 

myscript.py 파이썬 스크립트 상단에 있습니다

sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), 'customjson')) 
import json 
것은이

, 나는 json.py을 포함하는 "customjson"폴더가 파이썬 2.7이 제공하는 기본 json 패키지 대신에 사용하고 싶습니다. 스크립트가 표준 json 대신 "customjson"을 사용하도록 어떻게 만들 수 있습니까? 물론, 그 코드가 이식되지 않을 것,

import sys 
_orig_path = sys.path 
sys.path = ["C:\Scripts\customjson"] 
import json 
sys.path = _orig_path 

그러나 :

sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), 'customjson')) 
import json 
+3

왜 'json'버전을 불러도됩니까? – jordanm

+1

당신의 모듈은 분명히 다른 이름을 가져야합니다! – heltonbiker

+0

이전 버전의 json 모듈에 대한 사용자 지정 수정을 사용하려고합니다. 전화해야하는 다른 방법이 있다면 알려주십시오. 다른 이름으로 변경해야하는 사항은 무엇입니까? – Rolando

답변

2

sys.path에 먼저 customjson 디렉토리를 삽입하려고합니다. 당신은, 예를 들어,에 json2.pyjson.py의 이름을 바꿀 수

import sys, os 
_orig_path = sys.path 
sys.path = [ 
    os.path.abspath(os.path.join(os.path.dirname(__file__), "customjson")), 
] 
import json 
sys.path = _orig_path 

또는 : 그것은 휴대용하려면, 당신은 사용할 수 있습니다. 당신이 절대적으로이 json 선정해야하는 경우,

import json2 

또는 :

import json2 as json 

으로요을가, 두 번째는, 더 나은 보이는하지 않습니다 그리고 그것을 가져?

+1

그래도 이름 바꾸기가 가장 좋습니다. –

+0

그게 고마워. – Rolando

0

당신이 같은 것을 사용할 수 있습니다

0

말 : customjson 폴더의 이름은 package입니다.

그것은 쉽게 :

  1. 이 customjson 폴더에 __init__.py라는 이름의 파일을 만듭니다. 패키지 레벨에서 특별한 정의를 원하지 않으면 파일을 비울 수 있습니다.
  2. import 문을 패키지 내의 모듈을 참조하도록 변경하십시오 (예 : import customjson.json).
  3. 전체 경로 (customjson.json.whatever)를 사용하려면 모듈에 대한 참조를 변경하거나 import 문을 절 (import customjson.json as json)을 포함하도록 변경하십시오. from ... import ... 구문을 사용하는 경우이 작업은 필요하지 않습니다. as 절을 사용하는 것은 액세스를 다시 작성하는 것보다 쉽기 때문에 코드를 읽고 표준 json 모듈을 사용하려고하는 다른 프로그래머를 혼란스럽게 할 수 있습니다.

질문에서 설명하는 폴더 레이아웃이 주어지면 실행중인 스크립트의 현재 폴더가 항상 경로에 포함되어 있으므로이 경로로 이동하면 모듈 검색 경로를 전혀 사용할 필요가 없습니다. 그것이 customjson 패키지가있는 곳입니다.

관련 문제