Roman
Roman

Reputation: 9441

install local package into virtualenv using setuptools

I have a virtualenv with multiple little projects in it. Consider that they are all equal, so my folder structure looks something like this:

categorisation_ml/
    categorisation.py
    setup.py
    __init__.py
nlp/
    nlp.py
    setup.py
    __init__.py
etc/
__init__.py

I want to install both packages into the same virtualenv so that they are both accessible everywhere within the virtualenv.

Using this and this guide, I have created a setup.py script like this (for categorisation in this case):

from setuptools import setup, find_packages

setup(
    name = "categorisation",
    version = "1.0",
    scripts = ['categorisation.py']
)

then, I run python setup.py install , which seems to complete successfully.
When I cd into nlp/, enter python command line and try
import categorisation, I get:
ImportError: No module named categorisation.

What am I missing?

Upvotes: 2

Views: 2174

Answers (1)

Roman
Roman

Reputation: 9441

It seems that the package structure and setup.py is off. It should be something like this:

irrelevant_package_name/
    __init__.py
    setup.py
    categorisation_ml/
        categorisation.py
        __init__.py
    nlp/
        nlp.py
        __init__.py

and then the install script looking like this:

from setuptools import setup, find_packages

setup(
    name='package_name',
    version='1.0.0',
    description='This is a working setup.py',
    url='http://somesite.com',
    author='Roman',
    author_email='[email protected]',
    packages=find_packages(),
    install_requires=[
        'numpy',
    ],
    zip_safe=False
)

Then install it like this:

python setup.py install  #(just installs it as is)
python setup.py develop  #(Keeps track of changes for development)

If you pip freeze this should come up

package_name==1.0.0

And then in python imports should look like this:

from categorisation_ml import categorisation
from nlp import nlp

Upvotes: 2

Related Questions