2017-09-21 5 views
0

과거에는 파이썬에서 내 자신의 사용자 정의 패키지를 사용/가져 오기 위해 my .bash_profile을 편집하여 내 $ PATH 환경 변수에 추가되도록했습니다 .모듈을 파이썬 검색 경로로 가져 오기

>> echo $PATH 
/Users/MYNAME/google-cloud-sdk/bin:/Users/MYNAME/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Users/MYNAME/Documents/Python_Programs/MYPACKAGE1:/Users/MYNAME/Documents/GitRepos/MYPACKAGE2 

내 경로 변수에 MYPACKAGE1 및 MYPACKAGE2가 포함되어 있습니다. 전자는 문자 그대로 하나의 .py 파일이있는 폴더입니다. 후자는 종래의 패키지 폴더 구조를 따른다.

>> import sys 
>> sys.path 
['', 
'/Users/MYNAME/anaconda/bin', 
'/Users/MYNAME/anaconda/lib/python36.zip', 
'/Users/MYNAME/anaconda/lib/python3.6', 
'/Users/MYNAME/anaconda/lib/python3.6/lib-dynload', 
'/Users/MYNAME/anaconda/lib/python3.6/site-packages', 
'/Users/MYNAME/Documents/Python_Programs/MYPACKAGE1', 
'/Users/MYNAME/Documents/GitRepos/MYPACKAGE2', 
'/Users/MYNAME/anaconda/lib/python3.6/site-packages/Sphinx-1.5.6-py3.6.egg', 
'/Users/MYNAME/anaconda/lib/python3.6/site-packages/aeosa', 
'/Users/MYNAME/anaconda/lib/python3.6/site-packages/IPython/extensions', 
'/Users/MYNAME/.ipython'] 

좋아요, 아무 문제 중 하나를 패키지에서 가져 오기 없습니다 :주의해야 할

것은 내 PYTHONPATH이

>> echo $PYTHONPATH 

>> 

분명히 비어 있지만, 파이썬에서, 내가 sys.path 보면됩니다.

그래서 나는

MYPACKAGE3/ 
    bin/ 
    README.md 
    CHANGES.txt 
    setup.py 
    MANIFEST.IN 
    my_module/ 
     __init__.py 
     sub_module1.py 
     sub_module2.py 

MYPACKAGE2 내 경로

>> echo $PATH 
/Users/MYNAME/google-cloud-sdk/bin:/Users/MYNAME/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Users/MYNAME/Documents/Python_Programs/MYPACKAGE1:/Users/MYNAME/Documents/GitRepos/MYPACKAGE2:/Users/MYNAME/Documents/GitRepos/MYPACKAGE3 

에 추가하지만, 어떤 이유로 내가 파이썬에서 가져올 수없고, 그것의 같은 구조를 가지고 세 번째 패키지를 만든 내 sys.path에 없습니다 (sys.path는 이전과 똑같습니다).

>> import my_module 
ModuleNotFoundError: No module named 'my_module' 

변경된 사항이 없습니다. 내가 뭘 놓치고 있니?

미리 감사드립니다.

답변

0

대답은 내 $PATH 변수가 그 변수와 아무 관련이 없다는 것입니다. 명확히하기 위해 파이썬 3.6을 사용하고 있으므로 2.7에서 다를 수 있습니다.

오래 전 만들었어야하는 anaconda /.../site- packages 디렉토리에 .pth 파일이있는 것으로 나타났습니다. .../site-packages 디렉토리뿐만 아니라 해당 디렉토리에있는 .pth 파일에 나열된 모든 디렉토리 (또는 sys.path의 디렉토리에있는 것처럼 보입니다)가 sys.path처럼 보이게됩니다.

파이썬 파일 레이아웃

파이썬 설치는 모듈 디렉토리 내부의 사이트 패키지 디렉토리를 가지고있다. 이 디렉토리는 사용자가 설치 한 패키지가 삭제되는 곳입니다. 이 디렉토리의 .pth 파일에는 추가 패키지가 설치된 디렉토리에 대한 경로가 들어 있습니다.

나는이 질문이 다소 수수께끼라는 것을 알고 있지만, 수입업자를 이해하려는 다른 낙오자를 도울 수 있기를 바랍니다.

0

귀하의 에코 $ 경로는

"Users/MYNAME/Documents/GitRepos/MYPACKAGE3" 

하지

"/Users/MYNAME/Documents/GitRepos/MYPACKAGE3". 

당신이 "/"처음에 놓친 것 같은데 있습니다. 모듈 가져 오기를 시도하십시오

-bash-4.1$export PYTHONPATH="${PYTHONPATH}:/Users/MYNAME/Documents/GitRepos/MYPACKAGE3/" 

을 그리고 :

import sys 
sys.path.append("/Users/MYNAME/Documents/GitRepos/MYPACKAGE3/") 

또는 BASH에서을 :

은 sys.path에에 사용자 정의 경로를 추가합니다.

+0

미안하지만 오타되었습니다. 분명히 있습니다. – RSHAP

+0

세 번째 패키지 경로를 추가 한 후 sys.path를 붙여 넣고 패키지를 가져 오는 동안 발생한 오류를 붙여 넣습니다. –

+0

sys.path는 이전과 완전히 동일합니다. ModuleNotFound 오류를 게시했습니다 – RSHAP