我的设置非常简单:
from distutils.core import setup setup(name='myscripts', description='my scripts', author='Ago', author_email='blah', version='0.1', packages=['myscripts'] )
myscripts
文件夹包含大约10个python文件。如果我只执行我的main.py文件(可执行文件,它使用那些myscripts
文件),Everthing工作正常。现在我尝试做:
python setup.py sdist
但我明白了:
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)
文件file1.py
和file2.py
与其他文件一样常规。有什么建议吗?
答案 0 :(得分:5)
(已经工作,作为正确答案重新发布):
尝试删除“MANIFEST”文件并重新运行它。如果您移动了文件,那么MANIFEST可能是错误的(如果不存在则自动重新生成)。
答案 1 :(得分:1)
注意:我是setup.py,sdist等的新手,正在通过练习46“艰难地学习python” - >所以我还不知道我在做什么:) http://learnpythonthehardway.org/
我发现了这个问题,因为我在尝试包含脚本时收到了同样的错误。无论出于何种原因,我没有“清单”文件(我可以找到) - 也许我正在使用不同的distutils版本?我用pip来安装“发布”。
我的解决方案是使用脚本名称包含扩展名“* .py”。为:
...
'scripts': ['bin/testscript.py'],
...
在关注http://docs.python.org/distutils/setupscript.html#installing-scripts之后,似乎我不应该包含扩展名。所以,我不确定这里有什么,但它现在对我有用,并且“不是常规文件 - 跳过”错误消失了。
这解决了我的问题。你可以在https://github.com/stevekochscience/Test-python-package-with-script-LPTHW-EX46找到我的新手代码 README文件解释了我为测试包和测试脚本所做的工作。希望这有助于其他新手偶然发现这个问题!
答案 2 :(得分:0)
在我的情况下,这个错误是由于使用Python 2.7而不是Python 3无意中运行distutils
引起的。快速修复:
python3 setup.py register sdist upload
更好的是,正确标记脚本:
sed -i '1i #!/usr/bin/python3' setup.py