Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Install modules with setup.py and setup.cfg

I have the following directory structure:

/modules/
/modules/setup.py
/modules/setup.cfg

/modules/module1/
/modules/module1/__init__.py
/modules/module1/tool1/__init__.py
/modules/module1/tool1/tool1.py

/modules/module2/
/modules/module2/__init__.py
/modules/module2/tool2/__init__.py
/modules/module2/tool2/tool2.py
/modules/module2/tool3/__init__.py
/modules/module2/tool3/tool3.py

And I want to install these modules using setup.py and setup.cfg and import them later on like this:

import my_project.module1.tool1 
import my_project.module2.tool2
import my_project.module2.tool3 

These are my installation files:

setup.py

import setuptools

setuptools.setup(
    setup_requires=['paramiko>=2.0.1'],
    paramiko=True)

setup.cfg

[metadata]
name = my_project
summary = my project modules

[files]
packages =
    module1
    module2

It fails when I try to install the packages:

/modules# pip install -e .
Obtaining file:///modules
Installing collected packages: UNKNOWN
  Found existing installation: UNKNOWN 0.0.0
    Can't uninstall 'UNKNOWN'. No files were found to uninstall.
  Running setup.py develop for UNKNOWN
Successfully installed UNKNOWN
like image 749
hosselausso Avatar asked Mar 17 '26 22:03

hosselausso


1 Answers

In order to import your modules the way you want, you first need to make sure the directory structure is correct, otherwise importing the module tools will fail anyway. It should look like this:

│-- setup.py
│-- setup.cfg
│
│-- my_project/
│   │-- __init__.py  # Pretty important: Makes "my_project" a package
│   │
│   ├── module1/
│   │   │-- __init__.py
│   │   ├── tool1/
│   │   │   │-- __init__.py
│   │   │   │-- tool1.py
│   │
│   ├── module2/
│       │-- __init__.py
│       ├── tool2/
│       │   │-- __init__.py
│       │   │-- tool2.py
│       ├── tool3/
│           │-- __init__.py
│           │-- tool3.py

Then it you also need to fix setup.py like the other commenter mentioned

from setuptools import setup, find_packages

setup(
    name="my_project",
    packages=find_packages(),
    install_requires=['paramiko>=2.0.1'],
)

Let me know if this works for you. With this you should be able to import the packages in the way you described above.

like image 129
Noorvh Avatar answered Mar 20 '26 11:03

Noorvh