Создание импортируемого пакета / модуля Python 3 - PullRequest
0 голосов
/ 20 апреля 2019

У меня проблемы с созданием импортируемого пакета / библиотеки / модуля Python или любой другой правильной номенклатуры.Я использую Python 3.7

Используемая мной структура файла:

Python37//Lib//mypackage

mypackage
    __init__.py
    mypackage_.py

Код в __init__.py:

from mypackage.mypackage_ import MyClass

Код в mypackage_.py is:

class MyClass:
    def __init__(self, myarg = None):
        self.myvar = myarg

И с моего рабочего стола я пытаюсь запустить следующий код:

import mypackage

x = MyClass(None)

Но получаю следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\***\Desktop\importtest.py", line 3, in <module>
    x = MyClass(None)
NameError: name 'MyClass' is not defined

Ответы [ 2 ]

2 голосов
/ 20 апреля 2019

Вы не импортировали имя MyClass в текущее пространство имен.Вы импортировали mypackage.Чтобы получить доступ к чему-либо в пределах mypackage, вам необходимо добавить префикс имени к mypackage.<Name>

import mypackage

x = mypackage.MyClass(None)
1 голос
/ 20 апреля 2019

Как говорит @rdas, вам нужно добавить к имени префикс mypackage.<Name>.

Я не рекомендую делать это, но вы можете импортировать подстановочные знаки, чтобы x = MyClass(None) работал:

from mypackage import *

Теперь все из mypackage импортируется и используется в текущем пространстве имен. Однако вы должны быть осторожны с импортом подстановочных знаков, поскольку они могут создавать конфликты определений (если несколько модулей имеют одно и то же имя для разных вещей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...