我有一个项目,我想从中生成两个单独的python包。我想用pip安装这些软件包。
在回答上一个问题时,一般建议是编写两个setup.py
脚本:Multiple projects from one 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”的脚本放在不同的目录中吗?
答案 0 :(得分:7)
问题是为什么将这些项目放在一个目录中。我的建议是将它们正确分开,然后通过“setup.py develop -U”将它们添加到共享的virtualenv中。去过那里,做得很漂亮。
否则,你的下一个问题将是共享一个“setup.cfg”,“MANIFEST.in”等。一般来说,每次你打破setuptools / distribute的假设时,你都会有很多不必要的痛苦。
我假设你选择了上面的结构,所以这两个包都是自动地在python路径中,“develop -U”使它显式化,并引用“import this”:
明确比隐含更好。
答案 1 :(得分:0)
看起来setuptools不支持未命名为setup.py的设置脚本,这与distutils相反。我认为最好将错误报告给setuptools(bugs.python.org/setuptools)并分发(在bitbucket上)开发人员。