2017-12-13 32 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 

は今、2つのファイルがあります。

ピップでパッケージをインストールするには

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サブディレクトリ(またはgetHello.pyファイル)からインポートしようとしている可能性があります。

Pythonがモジュールを見つけて読み込む方法は、時には驚くべきことです。参照:https://docs.python.org/3/reference/import.html#searching

-vコマンドラインオプションをPythonインタプリタで使用して、何が起こっているのかを正確に確認してください。

正確に何がインポートされているのか混乱を避けるために、別のディレクトリ(getHelloサブディレクトリを持たないもの、またはgetHello.pyという名前のファイル)からPythonインタプリタを起動してください。 getHello__init__.pyを追加するには

1

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