2016-12-20 3 views
0
проект

Моего PyCharm был структурирован таким образом:проблем импорта Python при импорте моего собственного пакета

MyPrj 
|_ src 
    |_ main.py  

MyPackage 
|_ src 
| |_ MyPackage 
|  |_ __init__.py 
|  |_ MyModule.py 
|_ setup.py 

В main.py я добавил эту строку: from MyPackage import MyModule. Я успешно установил этот модуль, используя anaconda3 (~/anaconda3/bin/pip install .). После того, как возникла проблема с тем, что MyPackage не был найден, я повторно установил anaconda3, и код, наконец, работал.

Теперь я добавил еще один модуль MySub.py в MyPackage/src/MyPackage, а затем я импортировал его в MyModule.py (from MySub import sub, где sub является класс корректно определен в MySub.py). После обновления моего пакета в anaconda3, когда я пытаюсь запустить main.py, я получаю следующую ошибку: ImportError: No module named 'sub1', однако, если я загляну в папку anaconda3 MySub.py. Как решить эту проблему?

Это мой setup.py файл:

import os 
from setuptools import setup 


def read(fname): 
    return open(os.path.join(os.path.dirname(__file__), fname)).read() 


setup(
    name='MyPackage', 
    version='0.1', 
    description='my description', 
    long_description=read('README.txt'), 
    packages=['MyPackage'], 
    package_dir={'MyPackage': 'src/MyPackage'}, 
    zip_safe=False 
) 

мой __init__.py файл пуст.

+0

Вы действительно положили '.py' на свои' import' заявления? – user2357112

+0

Извините, это была опечатка, которую я исправил. – AreTor

+0

Нам нужно увидеть настоящую [mcve], а не несколько строк забытых импорта и дерева каталогов. – user2357112

ответ

1

Изменение:

from MyPackage import module.py 

к:

from MyPackage import module 

module это имя модуля Python; module.py - это имя самого файла и не разрешено в операторе импорта. Фактически, когда вы делаете import module.py, система импорта Python будет искать объект в названии py в module, что вряд ли будет тем, что вы на самом деле хотите. См. this и this для получения более подробной информации.

Смежные вопросы