我有一个项目,我想从中生成两个单独的python包。我想使用pip安装这些包。
在回答上一个问题时,一般建议编写两个脚本:Multiple projects from one setup.py?
所以我尝试了这样的结构:

/myproject
   setup_foo.py
   setup_bar.py
   /mypackage1
   /mypackage2
   ...

setup.py中,我设置了setup_foo.py参数:
from distutils.core import setup
setup(name = 'foo',
      version = '2.0.0',
      ...,
      script_name = 'setup_foo.py')

(我还尝试了以下不带参数的方法-根据文档,它默认为sys.argv[0])
我使用创建
python setup_foo.py sdist

但当我收到这样的错误:
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'

我是否缺少指导script_name使用的方法?还是应该将两个名为“setup.py”的脚本放在单独的目录中?

最佳答案

问题是为什么要将这些项目放到一个目录中。我的建议是正确地将它们分开,然后通过“setup.py develop-u”将它们添加到共享的virtualenv中。去了那里,做了那件事,效果很好。
否则,您的下一个问题将是共享“setup.cfg”、“manifest.in”等。一般来说,每当您打破设置工具/分发的假设时,都会有许多不必要的痛苦。
我想您选择了上面的结构,这样两个包都自动地在python路径中,“develop-u”使其显式,并引用“import this”:
显式优于隐式。

08-04 17:31