自己的pip python包导入没有

2024-05-21 08:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建我的第一个python包。很遗憾我遇到了一些错误。我只是想定义一些应该是可导入的类。在

这是我的文件夹结构

/pip-blitz-query
    /blitzjs_query
        __init__.py
        blitz.py
        blitz_http.py
        ...
    setup.py

下面是我试图从blitzjs_query导入类Blitz时发生的错误:

^{pr2}$

这是我的__init__.py文件:

^{3}$

最后是我的setup.py文件。我尝试过__init__.py文件的不同变体,有些甚至什么都没有——但它永远都不起作用

# Always prefer setuptools over distutils
from setuptools import setup, find_packages
# To use a consistent encoding
from codecs import open
from os import path

# Get the long description from the README file
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
    long_description = f.read()

setup(
    name='blitzjs_query',

    version='0.0.2',

    description='HTTP/Socket.io adapter for the blitz.js framework',
    long_description=long_description,

    url='https://github.com/nexus-devs/pip-blitz-query',

    author='Nexus Devs',
    author_email='nexus@nexus-stats.com',

    license='MIT',

    classifiers=[
        'Development Status :: 1 - Planning',
        'Intended Audience :: Developers',
        'Topic :: Internet :: WWW/HTTP',
        'License :: OSI Approved :: MIT License',

        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.6',
    ],

    keywords='development blitz nexus socket.io http',

    packages=find_packages(),

    install_requires=['pymitter', 'socketIO-client', 'promise', 'requests'],
)

Tags: 文件pathfrompyimportnexusinitsetup
2条回答

您的模块名为blitzjs_query,因此在所有导入的前面加上blitzjs_query.

像这样:

from blitzjs_query.blitz import Blitz
from blitzjs_query.connection import Connection
from blitzjs_query.blitz_queue import Queue
from blitzjs_query.blitz_socket import Socket
from blitzjs_query.blitz_http import Http

通常使用相对导入(在子模块前面加上一个或多个.):

from .blitz import Blitz
from .connection import Connection
from .blitz_queue import Queue
from .blitz_socket import Socket
from .blitz_http import Http

因为您不创建名为blitz的模块,而只创建了一个名为blitz的模块。在

有关相对和绝对导入的详细信息,请参阅PEP 328

Guido has Pronounced that relative imports will use leading dots. A single leading dot indicates a relative import, starting with the current package. Two or more leading dots give a relative import to the parent(s) of the current package, one level per dot after the first. [...]

相关问题 更多 >