Ho riscontrato un problema con l'utilizzo di setup.py
per l'installazione di un pacchetto python. In primo luogo, ho la seguente configurazione directory:Errore di importazione sul pacchetto installato utilizzando setup.py
maindir
|- setup.py
|-mymodule
|- __init__.py
|- mainmodule.py
|-subdir
|- __init__.py
|- submodule.py
vale a dire la cartella del progetto contiene il setup.py
e una directory mymodule
, che di per sé contiene due moduli Python in due directory. Il file submodule.py
contiene solo
teststring = "hello world"
mainmodule.py
contiene:
from .subdir import submodule
mainstring = "42"
e setup.py
contiene:
import os
from setuptools import setup
setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=['mymodule'],
)
Quando faccio from mymodule import mainmodule
con ipython
dall'interno sourceTest
comportamento funziona come previsto e io può fare riferimento ad es mainmodule.submodule.teststring
che mi dà la stringa hello world
.
D'altra parte, quando si installa questo 'pacchetto' con python setup.py install
e cercare di fare lo stesso (dall'interno di altre directory), ottengo un errore di importazione:
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
non vedo che cosa Ho sbagliato, come ho seguito uno Getting started tutorial e rules for importing intra-packages. Suppongo che il mio errore sia davvero minuscolo, ma non riesco a individuarlo e l'aiuto è apprezzato.
Questo è descritto da qualche parte? C'è qualche documentazione sul contenuto di 'setup' su' distutils'?Non sembra facile trovare la documentazione rappresentativa. – Alex
Aggiunto un collegamento a un esempio dai documenti. –
Per ulteriori riferimenti che spiegano come 'package_dir' è usato in modo ricorsivo per trovare sotto-pacchetti, a condizione che quei sotto-pacchetti siano elencati in' packages', leggi [this] (https://docs.python.org/2/ distutils/setupscript.html # messa in vendita di-tutto-packages). –