[Python] setup bdist ==> error: can't copy 'ANIFEST.in': doesn't exist or not a regular file
Daniele Tricoli
eriol a mornie.org
Dom 16 Feb 2014 10:05:24 CET
Ciao Piergiuliano,
On Friday 14 February 2014 16:47:35 Piergiuliano Bossi wrote:
> Mi sto spaccando le corna su una cosa che immagino essere stupida e banale
> e mi fara' sentire piccolo e misero di fronte all'universo.
No dai, può capitare a tutti! Il bello di liste come questa è appunto poter
discutere con altri che hanno la stessa tua passione anche su cose
apparentemente incomprensibili come questa! :)
[CUT output of $ python setup.py bdist]
> error: can't copy 'ANIFEST.in': doesn't exist or not a regular file
>
> Inoltre, se uno prova a installare il sorgente (attualmente pubblicato) con
> pip install ottiene lo stesso errore.
Premesso che non ho indagato a fondo anche perché in genere cerco di evitare
setuptools, quindi non ti so dire perché MANIFEST.in diventi ANIFEST.in però
ho notato una cosa.
Nel tuo setup.py scrivi:
[...]
packages=['simpyple'],
[...]
Cioè stai dicendo che esisterà simpyple/__init__.py, ma il layout del tuo
progetto è diverso in quanto il tuo package è nella stessa directory di
setup.py, per cui al posto di package_dir={'simpyple': ''}, in effetti
dovresti dare package_dir={'simpyple': '.'},
Infatti con (non ti mando una PR, ma ti incollo qui la diff):
eriol a mornie:~/tmp/simpyple$ git diff
diff --git a/setup.py b/setup.py
index aa31bb7..9faddff 100644
--- a/setup.py
+++ b/setup.py
@@ -45,7 +45,7 @@ setup(
author_email='',
url='https://github.com/thinkingbox/simpyple',
license='',
- package_dir={'simpyple': ''},
+ package_dir={'simpyple': '.'},
packages=['simpyple'],
include_package_data=True,
zip_safe=False,
eriol a mornie:~/tmp/simpyple$ python setup.py bdist
running bdist
running bdist_dumb
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/simpyple
copying ./schedule.py -> build/lib.linux-x86_64-2.7/simpyple
copying ./__init__.py -> build/lib.linux-x86_64-2.7/simpyple
running egg_info
creating simpyple.egg-info
writing requirements to simpyple.egg-info/requires.txt
writing simpyple.egg-info/PKG-INFO
writing top-level names to simpyple.egg-info/top_level.txt
writing dependency_links to simpyple.egg-info/dependency_links.txt
writing manifest file 'simpyple.egg-info/SOURCES.txt'
reading manifest file 'simpyple.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'simpyple.egg-info/SOURCES.txt'
installing to build/bdist.linux-x86_64/dumb
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/dumb
creating build/bdist.linux-x86_64/dumb/usr
creating build/bdist.linux-x86_64/dumb/usr/local
creating build/bdist.linux-x86_64/dumb/usr/local/lib
creating build/bdist.linux-x86_64/dumb/usr/local/lib/python2.7
creating build/bdist.linux-x86_64/dumb/usr/local/lib/python2.7/dist-packages
creating build/bdist.linux-x86_64/dumb/usr/local/lib/python2.7/dist-
packages/simpyple
copying build/lib.linux-x86_64-2.7/simpyple/schedule.py -> build/bdist.linux-
x86_64/dumb/usr/local/lib/python2.7/dist-packages/simpyple
copying build/lib.linux-x86_64-2.7/simpyple/__init__.py -> build/bdist.linux-
x86_64/dumb/usr/local/lib/python2.7/dist-packages/simpyple
byte-compiling build/bdist.linux-x86_64/dumb/usr/local/lib/python2.7/dist-
packages/simpyple/schedule.py to schedule.pyc
byte-compiling build/bdist.linux-x86_64/dumb/usr/local/lib/python2.7/dist-
packages/simpyple/__init__.py to __init__.pyc
running install_egg_info
Copying simpyple.egg-info to build/bdist.linux-
x86_64/dumb/usr/local/lib/python2.7/dist-packages/simpyple-0.1.2.egg-info
running install_scripts
creating /home/eriol/tmp/simpyple/dist
Creating tar archive
removing 'build/bdist.linux-x86_64/dumb' (and everything under it)
(Scusa il wordwrap, ma il log penso renda l'idea).
Trovi informazioni dettagliate sulla cosa qui:
http://docs.python.org/2/distutils/setupscript.html
Forse ti conviene utilizzare un layout più convenzionale sia per evitare
sorprese del genere, ma anche per seguire il POLA, in effetti pure non ho
notato a colpo d'occhio che il package si trovava allo stesso livello di
setup.py.
È vero, avere il repository col path del package
simpyple/simpyple/__init__.py
...
setup.py
può non sembrare il massimo, ed anche a me ogni tanto viene da pensarci, ma
poi mi dico che non vale la pena complicarsi la vita.
Ah, magari vuoi impostare il tuo editor in modo che rimuova i trailing space:
ci sono un paio di righe nel setup.py che contengono solo uno spazio... per
fortuna nel mio vimrc non uso uso l'impostazione "mostrami le lacrime di
sangue al posto dei trailing space" come usa(va) fare Marco Beri! ;-)
HTH,
--
Daniele Tricoli 'Eriol'
http://mornie.org
Maggiori informazioni sulla lista
Python