2017-12-13 6 views
0

vim .pypirc를 홈 디렉토리에 저장합니다.ImportError : 내 pypi 패키지를 설치 한 후에 이름이 지정된 모듈이 없습니다.

[distutils] 
index-servers=pypi 

[pypi] 
repository = https://upload.pypi.org/legacy/ 
username = xxxx 
password = xxxx 

디렉토리 구조입니다.

tree /tmp/getHello 
/tmp/getHello 
├── getHello 
│   └── getHello.py 
├── README.rst 
└── setup.py 

getHello.py.

tmp/getHello/setup.py.

cat /tmp/getHello/setup.py 
from setuptools import setup, find_packages 
from codecs import open 
from os import path 
here = path.abspath(path.dirname(__file__)) 
with open(path.join(here, 'README.rst'), encoding='utf-8') as f: 
    long_description = f.read() 
setup(
    name='getHello', 
    version='1.0.0', 
    description='getHello', 
    long_description=long_description, 
    url='https://upload.pypi.org/legacy/getHello', 
    author='The Python Packaging Authority', 
    author_email='[email protected]', 
    license='MIT', 
    classifiers=[ 
     'Development Status :: 3 - Alpha', 
     'Intended Audience :: Developers', 
     'Topic :: Software Development :: Build Tools', 
     'License :: OSI Approved :: MIT License', 
     'Programming Language :: Python :: 3', 
     'Programming Language :: Python :: 3.4', 
     'Programming Language :: Python :: 3.5', 
     'Programming Language :: Python :: 3.6', 
    ], 
    keywords='sample setuptools development', 
    packages=find_packages(exclude=['contrib', 'docs', 'tests']) 
) 

이제는 pypi 패키지를 만듭니다.

cd /tmp/getHello 
python3 setup.py sdist build 
python3 setup.py bdist_wheel --universal 

파일 트리를 나열합니다.

tree 
. 
├── build 
│   └── bdist.linux-x86_64 
├── dist 
│   ├── getHello-1.0.0-py2.py3-none-any.whl 
│   └── getHello-1.0.0.tar.gz 
├── getHello 
│   └── getHello.py 
├── getHello.egg-info 
│   ├── dependency_links.txt 
│   ├── PKG-INFO 
│   ├── SOURCES.txt 
│   └── top_level.txt 
├── README.rst 
└── setup.py 

소스 파일과 whl 파일을 업로드하십시오. 내 pypi 계정 getHello-1.0.0-py2.py3-none-any.whlingetHello-1.0.0.tar.gz :

python3 setup.py sdist upload 
python3 setup.py bdist_wheel upload 

지금 두 개의 파일이 있습니다.

pip와 함께 패키지를 설치하려면.

sudo pip3 install getHello 

모든 것이 getHello에 준비되어 있습니다.

python3 
import getHello 

오류

여기서 발생

ImportError: No module named 'getHello' 

왜 getHello.py이 getHello-1.0.0-py2.py3-none-any.whlin 또는 getHello-1.0.0.tar.gz로 포장 될 수없는 이유는 무엇입니까? getHello.py를 getHello-1.0.0-py2.py3-none-any.whlin 또는 getHello-1.0.0.tar.gz에 묶는 방법?

답변

0

Python은 방금 설치 한 패키지가 아닌 트리 (또는 getHello.py 파일)의 'getHello'하위 디렉토리에서 가져 오기를 시도 할 가능성이 큽니다.

파이썬이 모듈을 찾아로드하는 방식은 때로는 놀랄 수 있습니다. 참조 : https://docs.python.org/3/reference/import.html#searching

정확한 내용을 보려면 -v 명령 줄 옵션을 Python 인터프리터와 함께 사용하십시오.

정확히 무엇을 가져올 지 혼란을 피하려면 다른 디렉토리 (getHello 서브 디렉토리가 없거나 getHello.py라는 파일이없는 디렉토리)에서 Python 인터프리터를 시작하십시오.

cd getHello/getHello 
vim __init__.py 
from getHello.say import say 
:
1

__init__.py getHello에 추가하려면
관련 문제