我有一个项目,我想从中生成两个独立的python包。我想用pip安装这些软件包。使用多个setup.py脚本的多个项目?
在回答这个前面的问题,一般的建议是写两个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')
(我也尝试了下面没有参数 - 根据th出入口文件默认为sys.argv中[0])
我使用
python setup_foo.py sdist
创建foo-2.0.0.tar.gz
但是,当我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'的脚本放在不同的目录中?
感谢您的回答!你选择我所说的结构的理由几乎是正确的;我有两个人。首先,我使用PyDev/Eclipse,并希望尽可能避免项目间依赖关系。其次,我的两个发行版共享项目中几乎所有的包 - 它们主要区别于包含哪些命令行工具 - 因此将它们分成两个或三个单独的项目似乎有点过分。如果一个项目中的两个发行版以错误的方式磨损setuptools,我可能会选择只有一个发行版,并接受在所有服务器上部署所有脚本。 – 2012-01-17 21:08:49
请参阅http://code.google.com/p/pyroscope/source/browse/trunk/update-to-head.sh获取一些灵感。如果您安装到virtualenv(即使是在生产机器上也是一个好主意),您可以选择性地对工具存根进行符号链接,从而发布选定的子集(请参阅“ln -nfs $(grep -l'entry_point。* pyrocore =='$ PWD/bin/*)$ {BIN_DIR: - 〜/ bin} /“命令)。 – pyroscope 2012-01-18 22:13:58
聪明!是的,这是一个更简单的方法来隐藏/发布sripts子集。 – 2012-01-20 15:59:16