2015-08-17 1 views
1

Je suis en train d'écrire du code pour le noyau Pandas et je me demande si mon flux de travail est correct. Comme l'instance de Travis CI teste les différentes versions de Python, j'ai mis en place une commande pour basculer entre les différentes versions localement afin que je puisse voir si la suite de tests réussit ou échoue.Flux de travail de développement Pandas: extensions C et bâtiment C

Mais chaque fois que je passe entre les environnements je reçois:

ERROR: Failure: ImportError (C extension: libpython2.6.so.1.0: cannot open shared object file: No such file or directory not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first.) 

et quand je fais python setup.py build_ext --inplace je reçois:

/home/some_user/anaconda/lib/python2.7/site-packages/setuptools-17.1.1-py2.7.egg/setuptools/dist.py:294: UserWarning: The version specified ('0.16.2-134-g84d6eba') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details. 
running build_ext 
skipping 'pandas/index.c' Cython extension (up-to-date) 
skipping 'pandas/src/period.c' Cython extension (up-to-date) 
skipping 'pandas/algos.c' Cython extension (up-to-date) 
skipping 'pandas/lib.c' Cython extension (up-to-date) 
skipping 'pandas/tslib.c' Cython extension (up-to-date) 
skipping 'pandas/parser.c' Cython extension (up-to-date) 
skipping 'pandas/hashtable.c' Cython extension (up-to-date) 
skipping 'pandas/src/sparse.c' Cython extension (up-to-date) 
skipping 'pandas/src/testing.c' Cython extension (up-to-date) 
skipping 'pandas/msgpack.cpp' Cython extension (up-to-date) 

Alors, comme par @ commentaire de Jeff à this question, je reconstruis les extensions en utilisant:

python setup.py build_ext --inplace --force 

Et les choses fonctionnent bien. Mais la construction prend quelques bonnes minutes à courir, et j'ai l'impression de faire quelque chose de mal. (Il ne certainement mentionne pas avoir à forcer une reconstruction dans le guide Contributing to Pandas.

Alors que je fais quelque chose de mal, ou est-ce juste la façon dont cela fonctionne?

Répondre

2

Vous ne pouvez pas construire plusieurs versions dans le même espace . vous devez faire un de ces:.

  • mettre le répertoire cloné à l'intérieur du répertoire conda lui-même Par exemple, si vous avez pandas2.6, vous pouvez (votre chemin peut varier si vous avez miniconda/Anaconda installé), à ~/minicona/envs/pandas2.6 puis clone pandas il y a un sd python setup.py build_ext --inplace et accès local

  • utilisez python setup.py build. Si votre répertoire clone est ~/pandas. Cela met les builds pour différentes versions dans ~/pandas/builds/...... L'inconvénient de ceci est que vous devez en fait emprunter des chemins pour les exécuter, par ex. nosetests ~/pandas/builds/....../pandas/tests/test_series.py par exemple. Plus vous reconstruire chaque fois que vous voulez faire un changement (mais puisque les extensions-c sont déjà construites c'est généralement très rapide).

+0

Des trucs merveilleux. Merci. Cela pourrait valoir la peine de mettre cela dans le guide du développeur. – LondonRob

+0

sûrement .... voulez faire un PR? – Jeff

+0

en fait je devrais ajouter, que vous pouvez faire '' conda develop conda.receipe'' et il va créer un lien de développement (dans l'env) – Jeff