2013-10-08 1 views
0

다른 운영체제의 여러 사람들이 사용할 파이썬 스크립트를 작성 중이므로 제 3 자 패키지를 포함하는 가장 좋은 방법을 알아 내려고 노력하고 있습니다. 사용자는 스크립트를 실행하기 전에 패키지를 직접 설치할 필요가 없습니다. 내가 사용중인 특정 라이브러리는 Requests 패키지입니다. 그것은 pip를 통해 설치할 때 나에게 잘 작동하지만 소스를 다운로드하고 프로젝트 루트에서 가져 오기를 시도하면 작동하지 않습니다. 가져 오기를 시도하는 방법에 따라 "비 패키지에서 상대 가져 오기 시도"또는 "모듈 이름이 MyProject.request"가됩니다.Python - 시스템 간 스크립트에 외부 라이브러리 사용하기

그래서 내 첫 번째 질문은 내가이 권리에 접근하고 있다고 생각합니까? 필자는 필자 자신보다 더 많은 사용자를위한 Python 스크립트를 작성한 적이 없으므로 패키지 설치와 같은 문제에 대해 한 번도 신경 쓰지 않았습니다. 요청 라이브러리의 소스를 포함하고 프로젝트와 관련하여이를 가져 오는 올바른 접근 방법인가, 아니면 더 쉬운 접근 방법이 있습니까?

후속 질문으로, 내가 올바른 길을 가고 있다면 프로젝트에서이 패키지를 포함하기위한 적절한 절차는 무엇입니까?

내가 from .MyProject.requests import requestsfrom .requests import requests 등을 시도했습니다 main.py에서
MyProject/ 
    __init__.py 
    main.py 
    requests/ 
     requests/ 
      __init__.py 
      [bunch of other stuff] 
     [other files/folders] 

모두 제공 나. "시도가 아닌 패키지에 상대적으로 수입"지금 내 파일 구조는 다음과 같습니다 나는 sys.path로 아직 엉망이되어 본 적이 없지만, 그것이 올바른 방법인지 여부에 관해 많은 조언을 보았다. 필자가 가장 염려하는 점은이 스크립트를 실행하는 것 외에는 아무 것도하지 않고이 스크립트를 사용자 컴퓨터에서 실행시키는 것입니다. 사용자가 외부 패키지를 설치하지 않아도되지만 원본 가져 오기를 시도해도 작동하지 않는 것처럼 보입니다.

+0

'requests' 하위 디렉토리에서 제거를 시도 했습니까? 나는'MyProject/requests/requests/[stuff of stuff] '가 너무 많다고 생각한다. 'MyProject/requests/[물건 묶음]'을 시도해보십시오. – Evert

+2

사실, 무슨 일이 일어나고 있는지, 패키지가 아닌 "외부"요청 디렉토리를 가져 오려고한다는 것입니다 ('__init __. py' 파일이 없으므로 하위 디렉토리 하나를 제거하면 해결 될 수 있습니다). 귀하의 문제. – Evert

+0

네, 그게 문제가 된 것 같아요. 요청 패키지가 어떻게 작동하는지 정확히 알지 못했기 때문에 "외부"디렉토리에있는 파일 중 실제 패키지에 중요한 파일이 있는지 알지 못했습니다. – Ben

답변

0

Evert의 답변에 따르면 내 문제는 여러 개의 "요청"디렉토리였던 것 같습니다. 하위 디렉토리를 옮겨서 요청 소스에서 불필요한 파일/디렉토리를 제거했을 때 완벽하게 작동했습니다.

관련 문제