2010-12-09 6 views
4

J'ai une configuration très simple:distutils "pas un fichier régulier --skipped"

 
from distutils.core import setup 

setup(name='myscripts', 
     description='my scripts', 
     author='Ago', 
     author_email='blah', 
     version='0.1', 
     packages=['myscripts'] 
    ) 

myscripts dossier se compose d'environ 10 fichiers python. Everthing fonctionne très bien si j'exécute mon fichier main.py (exécutable, qui utilise ces fichiers myscripts). Maintenant, j'essaie de faire: python setup.py sdist

Mais je reçois:

 
running sdist 
warning: sdist: missing required meta-data: url 
reading manifest file 'MANIFEST' 
creating myscripts-0.1 
making hard links in myscripts-0.1... 
'file1.py' not a regular file -- skipping 
hard linking setup.py -> myscripts-0.1 
'file2.py' not a regular file -- skipping 
tar -cf dist/myscripts-0.1.tar myscripts-0.1 
gzip -f9 dist/myscripts-0.1.tar 
removing 'myscripts-0.1' (and everything under it) 

fichiers file1.py et file2.py sont aussi réguliers que d'autres fichiers. Aucune suggestion?

+0

Pouvez-vous lancer 'ls -l' dans le répertoire contenant ces fichiers et publier la sortie? –

+2

Essayez de supprimer le fichier "MANIFEST" et de le relancer. Si vous avez déplacé des fichiers, MANIFEST peut être erroné (il se régénère automatiquement s'il n'y est pas). –

+0

Thomas, c'est ce qu'il a fait. Le fichier MANIFEST consistait en ces 2 fichiers + setup.py. J'ai enlevé le fichier et ça marche maintenant. Merci! Comment puis-je accepter votre réponse? :) – Ago

Répondre

5

(déjà travaillé, reposter comme une réponse appropriée):

Essayez de supprimer le fichier « MANIFESTE » et re-exécuter. Si vous avez déplacé des fichiers, MANIFEST peut être erroné (il se régénère automatiquement s'il n'y est pas).

+0

Et je ai repost mon commentaire ici aussi: Thomas, ça l'a fait. Le fichier MANIFEST consistait en ces 2 fichiers + setup.py. J'ai enlevé le fichier et ça marche maintenant. Merci! – Ago

1

NOTE: Je suis nouveau à setup.py, sdist, etc. et travaille à travers l'exercice 46 dans "apprendre python à la dure" -> Donc je ne sais pas encore ce que je fais :) http://learnpythonthehardway.org/

J'ai trouvé cette question parce que je recevais la même erreur en essayant d'inclure un script. Pour une raison quelconque, je n'ai pas de fichier "manifeste" (que je puisse trouver) - peut-être que j'utilise une version distutils différente? J'ai utilisé pip pour installer "distribuer".

La solution pour moi était d'inclure l'extension "* .py" avec le nom du script. Comme:

... 
'scripts': ['bin/testscript.py'], 
... 

Tout en suivant http://docs.python.org/distutils/setupscript.html#installing-scripts il semblait que je ne devrais pas inclure l'extension. Donc, je ne suis pas sûr de ce qui se passe ici, mais cela fonctionne pour moi dès maintenant et l'erreur «pas un fichier régulier - sauté» est parti.

Cela a résolu mon problème. Vous pouvez trouver mon code de débutant à: https://github.com/stevekochscience/Test-python-package-with-script-LPTHW-EX46 Le fichier README explique ce que j'ai fait pour tester le paquet avec le script de test. J'espère que cela aide d'autres débutants qui trébuchent à travers cette question!

0

Dans mon cas, cette erreur a été provoquée en exécutant inadvertly distutils avec Python 2.7 au lieu de Python 3. La solution rapide:

python3 setup.py register sdist upload

Mieux encore, marquer correctement le script:

sed -i '1i #!/usr/bin/python3' setup.py

Questions connexes