установка пакета Python из github в виртуальную среду работает, но импорт не выполняется

  1. Я создал проект Python с именем PythonApplication.
  2. Я создал виртуальную среду env (Python 3.6 (64-разрядная версия))
  3. Я запускаю следующее в каталоге виртуальной среды

pip install git+git://github.com/BillMills/python-package-example.git

Я получаю: введите здесь описание изображения

Глядя на структуру каталогов на

..\PythonApplication\PythonApplication\env\Lib\site-packages\myPackage

Я вижу введите здесь описание изображения

а также

введите здесь описание изображения

  1. Затем я добавляю следующий код внутрь PythonApplication.py.

import myPackage

foo = 6
bar = 7

Когда я запускаю это, я получаю следующую ошибку:

ModuleNotFoundError: нет модуля с именем «somePython»

Что я пропустил?

Основываясь на комментарии Саурава ниже, я повторил шаги. Однако после создания среды я активировал ее в командной строке и запустил команду pip внутри активированной среды вместо командной строки. Результаты не изменились.

Кто-то еще прокомментировал, что github.com/BillMills/python-package-example.git написан на Python 2 и не будет работать на Python 3. Если это так, что нужно изменить?

введите здесь описание изображения


person Barka    schedule 25.02.2018    source источник
comment
Вы активировали виртуальную среду перед установкой пакета git?   -  person Saurav Panda    schedule 25.02.2018
comment
Сейчас среда активна. Буду переделывать и проверять. Спасибо   -  person Barka    schedule 25.02.2018
comment
Я занимаюсь созданием проекта и добавлением среды в Visual Studio. Кажется, что Visual Studio активирует виртуальную среду при создании. Просто чтобы убедиться, что я снова выполнил шаги и активировал среду в командной строке, а в среде снова запустил команду pip. Результат не изменился. Я обновляю вопрос, чтобы отразить это.   -  person Barka    schedule 25.02.2018
comment
было бы лучше скопировать вывод терминала, а не загружать скриншоты, которые трудно читать   -  person avigil    schedule 25.02.2018
comment
Если вы понизите голос, пожалуйста, прокомментируйте, почему, чтобы я знал, как улучшить будущие вопросы.   -  person Barka    schedule 25.02.2018


Ответы (1)


Используемый вами пакет из https://github.com/BillMills/python-package-example использует стиль импорта, не поддерживаемый в Python 3. Вы можете увидеть в python-package-example/__init__.py, который

import somePython

используется для импорта подмодуля, но python 3 предполагает, что somePython существует как модуль верхнего уровня. См. PEP-328. для лучшего объяснения.

Пример пакета, совместимого с Python 3, можно найти по адресу https://github.com/kennethreitz/samplemod. Обратите внимание, что в sample/__init__.py подмодули импортируются с использованием относительный импорт (обозначается начальным знаком «.»):

from .core import hmm 

Если вы хотите изменить python-package-example для совместимости, вам нужно будет изменить его __init__.py, чтобы использовать абсолютный импорт:

import myPackage.somePython as somePython

или относительный импорт:

from . import somePython
person avigil    schedule 25.02.2018