如何在不将所有内容复制到lib/site-packages中的情况下安装Python包?

0 投票
2 回答
771 浏览
提问于 2025-04-15 21:48

我想开发一个通用的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文件夹里。

撰写回答