setup.py test' 的 egg 安装位置?
我在一个文件夹里预先下载了我项目需要的所有包,现在我希望setuptools只从这个文件夹里安装这些包。
在我的setup.cfg
文件里,我写了:
[easy_install]
allow_hosts = None
find_links = ../../setup
我运行python setup.py develop
,它能正确找到并安装所有的包。
为了测试,我在setup.py
里还有一个额外的需求。
tests_require=["pinocchio==0.2"],
这个包也在本地的../../setup
文件夹里。
我运行python setup.py test
,它能看到这个依赖,并且能在../../setup
里找到这个包。但是,这个包却被安装到了我当前的目录,而不是和其他包一起放在site-packages
目录里。
我试着在setup.cfg
和命令行中都指定了install-dir
,但在tests
命令下都没有效果。
我可以把这个依赖加到install_requires
部分,但我希望能把安装和测试所需的内容分开,如果可以的话。
我该如何把这个依赖保留在tests_require
部分,同时又让它安装到site-packages
目录呢?
1 个回答
从源代码(setuptools/command/tests.py)来看,setup.py test 这个命令本身并不是为了安装东西而设计的(因为它是用来测试的,为什么要把东西放进 site-packages 里呢?)。它使用 fetch_build_egg(setuptools/dist.py)来获取包,这实际上是进行本地的 easy_install。我怀疑你不能轻易地让 test 按照你的想法去做。
一些备注和想法: 我对 setuptools 的经验是,它里面有一些bug和未记录的行为。(我发现的一个特别麻烦的问题是,它不会进入软链接的目录,而 distutils 是可以的)。
我建议你要么 A) 不要这样做。:),要么 B) 手动通过调用 easy_install package 来安装文件,或者 C) 研究一下 setuptools 系统,可能可以添加你自己的命令。理解这些并不太难,掌握了它会在你以后遇到 setuptools 的问题时帮助很大。