2015-06-09 39 views
5

Sto usando setuptools per la prima volta e sto provando a impacchettare il mio codice in modo che altri possano facilmente svilupparlo. Sto gestendo tutto in un ambiente virtuale.Modulo trovato in modalità di installazione ma non in modalità di sviluppo utilizzando setuptools

Domanda breve: Come cambio la directory a cui punta il collegamento dell'uovo quando eseguo python setup.py develop?

Lunga domanda: il modulo che sto sviluppando si chiama cops_and_robots. Quando eseguo python setup.py install, le cose funzionano correttamente e sono in grado di importare il mio modulo cops_and_robots. Tuttavia, quando ho eseguito python setup.py develop, in esecuzione import cops_and_robots riesce perché il cops_and_robots.egg-link punti alla directory sbagliata:

(cops_and_robots)Antares:cops_and_robots nick$ cat ~/virtual_environments/cops_and_robots/lib/python2.7/site-packages/cops-and-robots.egg-link 
/Users/nick/Downloads/cops_and_robots/ 
. 

Ecco la struttura di directory:

|____Downloads 
| |____cops_and_robots # the whole package directory 
| | |____... 
| | |____requirements.txt 
| | |____setup.py 
| | |____src 
| | | |____cops_and_robots # the python package directory 
| | | |______init.py__ 
| | |____... 

E il mio setup.py:

from setuptools import setup, find_packages 
import ez_setup 
ez_setup.use_setuptools() 

setup(
    # Author information and Metadata 
    name='cops_and_robots', 

    # Package data 
    packages=find_packages('src'), 
    package_dir={'cops_and_robots':'src/cops_and_robots'}, 
    include_package_data=True, 
    platforms='any', 
    requires=['std_msgs','rospy'], 
    tests_require=['pytest'], 
    install_requires=[i.strip() for i in open("requirements.txt").readlines()], 
) 

Il la correzione manuale consiste nell'applicare semplicemente src/cops_and_robots al file cops_and_robots.egg-link, ma sto cercando un modo più elegante un modo per farlo.

risposta

5

Probabilmente troppo tardi per la necessità immediata, ma l'installazione di setuptools devel ha avuto questo problema da molto tempo. Fortunatamente, c'è una soluzione facile che potrebbe funzionare nel tuo caso. Basta provare a cambiare:

# Package data 
packages=find_packages('src'), 
package_dir={'cops_and_robots':'src/cops_and_robots'}, 

a

# Package data 
packages=find_packages('src'), 
package_dir={'':'src'}, 

nello script setup.py.

Quel caso dovrebbe funzionare abbastanza bene con setuptoolssetup.py devel e quindi con pip install -e pure.

Per un po 'di informazioni di base su questo argomento, consultare i seguenti link: