2013-06-19 4 views
1

최근에 파이썬 패키지를 빌드하고 데비안 패키지 관리자를 통해 설치했습니다. 내 시스템에 설치되어 다른 프로젝트에서도 사용할 수 있습니다. 필자의 새 프로젝트에서는 패키지 폴더의 이름과 동일한 이름 인 opal이 있습니다. 이 사이트를 포함하여 웹을 스캔하고 모든 사용 향해 지적 :파이썬 가져 오기 충돌

from __future__ import absolute_import 

불행히도,이 문제가 해결되지 수, 나는 세부 사항을 잃었 생각한다. 내가 여기 파이썬 2.7.3를 사용하고

내 프로젝트 폴더 구조입니다 :

설치된 패키지 구조 :

- opal 
    __init__.py 
    core.py 

새 프로젝트 구조 :

- opal 
    - __init__.py 
    - net.py 

새로운 프로젝트에서 I 할 수 없음 :

from opal.core import OpalClient 

항상 core이 (가) opal에 있습니다.

__future__이 해결책 인 경우 누군가 제게 예제를 제공해 줄 수 있습니까? 몇 가지 방법을 시도하고 항상 오류가 발생했습니다.)

건배

답변

1

파이썬 추가 지원없이 하지 병합 네임 스페이스를 수행을, 나는이 같은 깔끔한 언어에 대한 불편 문제를 발견했다. 다른 최상위 수준 인 opal 패키지가 발견되기 전에 한 곳에서 opal 최상위 패키지를 발견했습니다. 첫 번째 패키지에서 발견 된 모듈은 opal.net이지만 모듈은 opal.core이 아닙니다.

이 동작을 사용하려면 setuptools namespace setup을 사용해야합니다. setuptools 호환 패키지 setup.py을 설치하고 네임 스페이스를 등록하고 관리하도록하십시오.

파이썬 3.3 이상을 사용하는 경우 다음 병합 할 수있는 공간을 만들 빈 새로운 사용자가 최상위 디렉토리를 떠날 것 PEP 420 namespace support (또는 디렉토리) 를 사용할 수 있습니다. 또한 Python 3 가져 오기 시스템 문서에서 Namespace packages을 참조하십시오.

+0

데비안 패키지의 솔루션은 무엇입니까? 사용자와 개발자 모두 Linux 플랫폼에서 apt-get을 통해 패키지를 설치하거나 Python 방식으로 (setuptools) 패키지를 설치하는 두 가지 옵션을 모두 가지고 있습니다. – user2449584

+0

[Debian Python tools] (http://wiki.debian.org/Python/FAQ#Python_eggs)는 계란을 직접 처리 할 수 ​​있다고 생각합니다. setuptools 확장이 다른'opal' 패키지를 찾을 수 있도록 파이썬이 하나의 최상위 네임 스페이스로 보이도록 올바른 메타 데이터가 있어야합니다. –

+0

Python 3.3 및 이후 버전에서는 setuptools없이 네임 스페이스를 만들 수 있습니다. https://www.python.org/dev/peps/pep-0420 그런데 파이썬 3.2 나 더 중요한 파이썬 2를 사용할 수 없습니다. –