2015-01-10 6 views
1

파일 구조를 제거 홈 디렉토리와 마찬가지로 만남 :setup.py sdist의 flattings 패키지 파일 구조는 중간 폴더를

ImportError: No module named core.rdir_core 

물론 프로젝트 디렉토리에서 rdir을 가져 오면 잘 작동합니다.

EGG-INFO 
├── PKG-INFO 
├── SOURCES.txt 
├── dependency_links.txt 
├── not-zip-safe 
├── requires.txt 
├── scripts 
│   ├── __init__.py 
│   ├── generate_page.py 
│   ├── rdir.py 
│   ├── rdir_core.py 
│   └── rdir_node.py 
└── top_level.txt 

나는 또한 시도 난 그냥 import rdir_core rdir.py에서, 제대로 컴파일하는 경우 : 내가 site-packages/rdir.egg-info/로 보았다, 나는 모든 평 파일이 평평한 구조로 이동 한 것으로 나타났다. 그래서 내 setup.py에는 sth가 잘못되었다고 추측하고 일부 데모, github에 대한 유명한 python 프로젝트의 setup.py 및 공식 매뉴얼을 읽었습니다. 참조에 따라 setup.py를 변경했지만 모두 실패했습니다. 그래서 도움을 청해야한다는 생각이 없습니다.

내 setup.py에 문제가 있습니까? 아니면 내가 놓친 것이 있습니까?

아니면 다중 파일 구조 프로젝트의 setup.py의 좋은 예를 보여주십시오. 고맙습니다! 위의이 당신에게 충분한 정보를 제공 할 수없는 경우

BTW, 그것은 당신의 setup.py에서 packages 키워드의 문제입니다 rdir on Github

+0

처음에는'sudo python setup.py'를 해보지 마십시오. 잠재적으로 시스템 전반의 Python 설치를 파괴 할 수 있습니다. 대신 virtualenv를 사용하십시오 https://packaging.python.org/en/latest/installing.html#virtual-environments –

+0

전체'setup.py'도 게시 할 수 있습니까? –

+0

@MikkoOhtamaa 답장을 보내 주셔서 감사합니다. 사실 저는 setup.py를 테스트하기 위해 설치를합니다.이 패키지를 python install로 사용하지 마십시오. 기본적으로 가져 오기 및 작성자 정보를 무시하면 이것이 내 전체 setup.py입니다. – Lhfcws

답변

1

에서 찾아보세요. 하위 패키지와 최상위 패키지를 나열해야합니다. 이미 나는 아마 그냥 스크립트로 모든 평 파일을 수집하는 것은 sdist 물건을 시도하지 않았다

packages=find_packages(), 

수입 find_packages를 사용

packages=['rdir', 'rdir.core', 'rdir.generateHTML'], 

또는.

P. python setup.py build을 사용하여 결과 폴더 구조를 테스트 할 수 있습니다.

+0

find_packages()를 사용하여 메소드를 시도했지만 여전히 flat 구조에있는 모든 py 파일을 포함하는'scripts-2.7' 디렉토리를 생성합니다. 그러나 lib 디렉토리에는 올바른 구조로 남아 있습니다. – Lhfcws

0

레이에 의해 영감을 얻어, 나 스스로 해결했습니다.

setup.py에서 scripts의 문제입니다.

프로젝트는 평평한 구조 였으므로 0.30보다 훨씬 앞서 작동합니다. 그러나 내 컴퓨터에서 스크립트 옵션은 script/usr/local/bin에 설치하고 EGG에서 플랫 구조를 생성합니다.

/usr/local/bin에서 이전 스크립트를 제거하지 않으면 파이썬 인터프리터는 먼저 /usr/local/bin 아래의 스크립트를 검사하여 오류가 발생합니다.

그래서 해결책은 다음과 같습니다

  1. setup.py
  2. scripts를 제거하면 모든 packages=find_package()
  3. sudo는 RM은/usr/지방/빈/rdir *

감사를 설정합니다.