如何在不将所有内容复制到lib/site-packages中的情况下安装Python包?
我想开发一个通用的Python包,其他一些包都依赖于它。比如说:
- packageA/
- packageB/
- packageC/
- commonPackage/
packageA、packageB和packageC都可以直接运行,但它们都依赖于commonPackage。我想把commonPackage安装到lib/site-packages里,但我不想复制源代码。相反,我希望它在lib/site-packages里创建一个commonPackage.pth文件,里面记录commonPackage的路径。这样,当我修改commonPackage或者从SVN更新它时,就不需要重新安装了。现在的问题是,我该怎么写setup.py,或者使用python setup.py install的选项,才能实现我想要的效果呢?
2 个回答
1
你可以看看virtualenv,它可以让你为每个项目创建一个独立的Python环境。这是开发、构建和部署你的应用的理想方式,因为这样就不用把所有的东西都放到你的网站包目录里,避免了混乱。
这里有一个不错的教程:
http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
祝你好运!
2
哎呀,我刚好找到我想要的东西,就在这里。setuptools的开发命令正好可以实现我说的功能。在这里你需要输入
python setup.py develop
这样做会创建一个.pth文件,而不是把所有东西都复制到site-packages文件夹里。