У меня возникла проблема с использованием setup.py
для установки пакета python. Во-первых, у меня есть следующие настройки каталога:Ошибка импорта установленного пакета с помощью setup.py
maindir
|- setup.py
|-mymodule
|- __init__.py
|- mainmodule.py
|-subdir
|- __init__.py
|- submodule.py
т.е. директория проекта содержит setup.py
и каталог mymodule
, который сам по себе содержит два питона модулей в двух каталогах. Файл submodule.py
содержит только
teststring = "hello world"
mainmodule.py
содержит:
from .subdir import submodule
mainstring = "42"
и setup.py
содержит:
import os
from setuptools import setup
setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=['mymodule'],
)
Когда я from mymodule import mainmodule
с ipython
изнутри sourceTest
поведение работает, как ожидалось, и я может ссылаться, например mainmodule.submodule.teststring
, который дает мне строку hello world
.
С другой стороны, когда я устанавливаю этот «пакет» с помощью python setup.py install
и попытаться сделать то же самое (внутри какой-либо другой каталог), я получаю сообщение об ошибке импорта:
In [1]: from mymodule import mainmodule
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/home/alexander/<ipython-input-1-cf4c9bafa487> in <module>()
----> 1 from mymodule import mainmodule
/home/alexander/build/bdist.linux-i686/egg/mymodule/mainmodule.py in <module>()
ImportError: No module named subdir
Я не вижу, что Я поступил неправильно, поскольку я следил за Getting started tutorial и rules for importing intra-packages. Я полагаю, что моя ошибка очень крошечная, но я не могу ее заметить, и помощь приветствуется.
Это описано где-то? Есть ли какая-то документация по содержимому 'setup' на' distutils'?Невозможно найти репрезентативную документацию. – Alex
Добавлена ссылка на пример из документов. –
Для получения дополнительной информации о том, как «package_dir» используется рекурсивно для поиска подпакетов, при условии, что эти подпакеты перечислены в «пакетах», прочитайте [this] (https://docs.python.org/2/ Distutils/setupscript.html # список-все-пакеты). –