пакет установки python с подмодулями

У меня есть собственный пакет проекта со структурой вроде:

 package-dir/
     mypackage/
         __init__.py
         submodule1/
              __init__.py
              testmodule.py
         main.py
     requirements.txt
     setup.py

используя cd package-dir, за которым следует $pip install -e . или pip install ., как предложено python-packaging пока я получаю доступ к пакету из package-dir

Например :

 $cd project-dir
 $pip install .

на данный момент это работает:

 $python -c 'import mypackage; import submodule1'

но это не работает

 $ cd some-other-dir
 $ python -c 'import mypackage; import submodule1'
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ImportError: No module named submodule1

Как установить все субмодули?

также, если я проверю каталог package-dir/build/lib.linux-x86_64-2.7/mypackage, я увижу только непосредственные файлы в mypackage/*.py и НЕТ mypackage/submodule1

setup.py выглядит так:

from setuptools import setup
from pip.req import parse_requirements

reqs = parse_requirements('./requirements.txt', session=False)
install_requires = [str(ir.req) for ir in reqs]


def readme():
    with open('README.rst') as f:
        return f.read()

setup(name='mypackage',
      version='1.6.1',
      description='mypackage',
      long_description=readme(),
      classifiers=[

      ],
      keywords='',
      url='',
      author='',
      author_email='',
      license='Proprietary',
      packages=['mypackage'],
      package_dir={'mypackage': 'mypackage'},
      install_requires=install_requires,
      include_package_data=True,
      zip_safe=False,
      test_suite='nose.collector',
      tests_require=['nose'],
      entry_points={
          'console_scripts': ['mypackage=mypackage.run:run'],
      }
      )

person muon    schedule 13.07.2017    source источник
comment
работает ли python -c 'from mypackage import submodule1' в каком-то другом каталоге?   -  person kadnarim    schedule 13.07.2017
comment
не только в том же package-dir, обновите в конце дополнительную информацию о сборке, если это поможет   -  person muon    schedule 13.07.2017
comment
Каково содержание setup.py? В частности, у вас есть строка типа packages=setuptools.find_packages()?   -  person Nils Werner    schedule 13.07.2017
comment
Обновление @NilsWerner, и нет, у меня нет этой строки .. попробую   -  person muon    schedule 13.07.2017


Ответы (1)


setup.py отсутствует информация о структуре вашего пакета. Вы можете включить автоматическое обнаружение, добавив строку

setup(
    # ...
    packages=setuptools.find_packages(),
)

to it.

person Nils Werner    schedule 13.07.2017