2013-11-22 2 views
0

저는 Python을 처음 사용합니다. tutorial을 읽으면서 상자에 공유 코드를 추가 할 준비가되었습니다. 난 /usr/lib/python2.6/site-packages 참조 예맞춤 패키지에서 공유 파이썬 코드를 가져올 수 없습니다.

거기에서
>>> import sys 
>>> print sys.path 

로 경로를 검사. 이 디렉토리에서 약 yum 디렉토리가 있는데 여기에 파일 yumRepo.py이 있습니다. 내가 지금과 같은 사용자 정의 패키지/모듈을 작성하는 경우 위로 인터프리터, 나는, 그러나

>>> from yum import yumRepo 

를 실행할 수 있습니다

sudo mkdir /usr/lib/python2.6/site-packages/custom 
sudo touch /usr/lib/python2.6/site-packages/custom/custom.py 
(다른 모든 파일은 루트가 소유 여기에 따라서 sudo는주의)

및 custom.py

def testfunc(): 
    print('hello from custom module!') 

나는 그것을 가져올 수 없습니다 :

>>> from custom import custom 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named hnav 

권한은 더 _ 초기화 _.py 스크립트가없는 것보다 다른, 거의 패키지와 같은 모양,하지만 난 정말 하나가 필요? 이 공유 위치에서 코드를 가져올 수 있습니까?

답변

1

예 /usr/lib/python2.6/site-packages/custom에 __init__.py 파일이 있어야 파이썬 패키지로 만들 수 있습니다. 이 여기에 설명되어 다음 __init__.py 파일은 파이썬이 포함 된 패키지

또한

로 디렉토리를 치료하기 위해 필요한 http://docs.python.org/2.7/tutorial/modules.html#packages

, 자신의 패키지는 시스템 전체의 site-packages에있을 필요가 없습니다 디렉토리에있는 경우, PYTHONPATH 환경 변수에서 참조되는 디렉토리에서 이들을 가질 수 있습니다.

+0

고맙습니다. 그 점을 유념해야합니다. – quickshiftin

1

python setup.py 메커니즘이 항상 현재의 python 설치가 나중에 찾을 모듈/패키지를 배치하지 않는다는 것을 발견했습니다. 예를 들어, 모듈/패키지 소스가 /usr/local/whatever에 저장해야하는 일, 그리고 /usr/local/lib/python/etc하지 파이썬의 sys.path의 항목 인 경우, setup.py 어쨌든 /usr/local/lib/python/etc에 새로 설치된 파일을 저장할 수 있습니다. 당신처럼 --prefix 옵션을 지정하여이를 방지 :

sudo python setup.py install --prefix /usr 

또한, 당신은 당신이 sudo 명령을 사용 특히, 검사 권한 새로 설치된 파일 및 디렉토리의에 있습니다. 내 수입 문제는 새로 설치된 모듈에 적절한 권한을 설정하여 간단히 해결할 수있었습니다.

관련 문제