多个项目使用多个setup.py脚本?
我有一个项目,想从中生成两个独立的Python包。我希望通过pip来安装这些包。
在之前的问题回答中,大家普遍建议写两个 setup.py
脚本:从一个setup.py创建多个项目?
所以我尝试了这样的结构:
/myproject
setup_foo.py
setup_bar.py
/mypackage1
/mypackage2
...
在 setup_foo.py
中,我设置了 script_name
参数:
from distutils.core import setup
setup(name = 'foo',
version = '2.0.0',
...,
script_name = 'setup_foo.py')
(我也尝试过不加这个参数 - 根据文档,它默认使用 sys.argv[0])
我用下面的命令创建了 foo-2.0.0.tar.gz
:
python setup_foo.py sdist
但是当我运行 pip install foo-2.0.0.tar.gz
时,出现了这样的错误:
Unpacking .../foo-2.0.0.tar.gz
Running setup.py egg_info for package from file:///...foo-2.0.0.tar.gz
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory:
'/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'
我是不是漏掉了什么,让 pip
知道要使用 setup_foo.py
?还是说我应该在不同的目录里放两个名为 'setup.py' 的脚本?
2 个回答
1
看起来,setuptools不支持那些不是叫做setup.py的设置脚本,这和distutils不一样。我觉得最好是把这个问题反馈给setuptools的开发者(可以去bugs.python.org/setuptools)和分发(在bitbucket上)开发者。
7
这个问题是问你为什么把这些项目放在一个文件夹里。我建议你把它们分开放,然后通过“setup.py develop -U”把它们添加到一个共享的虚拟环境里。我之前也这样做过,效果非常好。
否则,你接下来会遇到共享“setup.cfg”、“MANIFEST.in”等文件的问题。一般来说,每次打破setuptools或distribute的假设时,你都会遇到很多不必要的麻烦。
我猜你选择这种结构是为了让这两个包自动在python路径中可用,而“develop -U”则让这个过程变得明确。引用一句话:“显式比隐式好。”