使用多个setup.py脚本的多个项目?

Nie*_*sen 9 python macos distutils pip python-2.7

我有一个项目,我想从中生成两个单独的python包.我想用pip安装这些软件包.

在上一个问题的答案中,一般建议是编写两个setup.py脚本:一个setup.py中的多个项目?

所以我尝试了这样的结构:

/myproject
   setup_foo.py
   setup_bar.py
   /mypackage1
   /mypackage2
   ...
Run Code Online (Sandbox Code Playgroud)

setup_foo.py我设置script_name参数:

from distutils.core import setup
setup(name = 'foo',
      version = '2.0.0',
      ...,
      script_name = 'setup_foo.py')
Run Code Online (Sandbox Code Playgroud)

(我也尝试了下面没有参数 - 根据文档默认为sys.argv [0])

我创建foo-2.0.0.tar.gz使用

python setup_foo.py sdist
Run Code Online (Sandbox Code Playgroud)

但是当我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'
Run Code Online (Sandbox Code Playgroud)

我错过了一些指示pip使用的方法setup_foo.py吗?或者我应该将两个名为'setup.py'的脚本放在不同的目录中?

pyr*_*ope 7

问题是为什么将这些项目放在一个目录中.我的建议是将它们正确分开,然后通过"setup.py develop -U"将它们添加到共享的virtualenv中.在那里,做到了,工作得很漂亮.

否则,你的下一个问题将是共享一个"setup.cfg","MANIFEST.in"等.一般来说,每次你打破setuptools/distribute的假设时,你都会有很多不必要的痛苦.

你选择了上面的结构,所以这两个包都是自动地在python路径中,"develop -U"使它显式化,并引用"import this":

显式优于隐式.