Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自己的pip python包导入不需要';行不通_Python_Python 3.x_Pip - Fatal编程技术网

自己的pip python包导入不需要';行不通

自己的pip python包导入不需要';行不通,python,python-3.x,pip,Python,Python 3.x,Pip,我目前正在尝试创建我的第一个python包。遗憾的是,我遇到了一些错误。我只是想定义几个应该可以导入的类 这是我的文件夹结构 /pip-blitz-query /blitzjs_query __init__.py blitz.py blitz_http.py ... setup.py 下面是我尝试从blitzjs\u query导入类Blitz时发生的错误: >>> import blitzjs_

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

这是我的文件夹结构

/pip-blitz-query
    /blitzjs_query
        __init__.py
        blitz.py
        blitz_http.py
        ...
    setup.py
下面是我尝试从
blitzjs\u query
导入类
Blitz
时发生的错误:

>>> import blitzjs_query
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\site-packages\blitzjs_query\__init__.py", line 1, in <module>
    from blitz import Blitz
ImportError: No module named 'blitz'
最后是我的
setup.py
文件。我尝试了
\uuuu init\uuuu.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'],
)

您的模块名为
blitzjs\u query
,因此在所有导入前加上
blitzjs\u 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

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

因为您不创建名为
blitz
的模块,而只创建一个子模块
blitzjs\u query.blitz

有关相对导入和绝对导入的更多信息,请参阅:

Guido宣布相对导入将使用前导点。单个前导点表示相对导入,从当前包开始。两个或多个前导点向当前包的父级提供相对导入,第一个点后每个点一个级别。[……]


相对导入必须明确:
from.blitz导入blitz
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