我想将Django安装到自定义位置,我已阅读distutils documentation并且它建议我应该能够执行以下操作以安装在我的主目录下(从一个解压缩的django tarball)。
> python setup.py install --home=~/code/packages/install --install-purelib=modules --install-platlib=modules --install-scripts=scripts --install-data=data
但是,每次运行时,它似乎都不会将主路径与单独的元素路径连接起来,所以我最终只能使用
modules/
scripts/
data/
在解压缩的tar ball目录中。即它似乎将模块,脚本等视为本地目录的相对路径而不是相对于指定的--home。
我尝试使用--prefix设置root,并使用setup.cfg,似乎没有任何工作。 --prefix和--home自己没有其他覆盖工作,但与--install-xxx一起使用时覆盖它不会。
我要么做一些蠢事,要么文档错了,或者他们是个bug。任何帮助都很大。
答案 0 :(得分:2)
我强烈建议您查看Virtualenv和Pip来创建python包的基本孤岛。
Pinax project现在专门用它来捆绑需求以供其他人使用,并且它在可重用的应用程序空间中越来越成为事实上的标准。
答案 1 :(得分:1)
好的,所以我一直在查看distutils源代码以查看发生了什么 - distutils.command.install
执行所有路径名操作。
事实证明文档实际上是不正确的。每当提供--install-xxxx样式选项时,它都会完全覆盖可能从--home
或--prefix
派生的任何值 - 代码不会对路径进行任何简单的连接
然而,它所做的是对一组特殊变量的变量替换。我特别感兴趣的是$base
。在命令行上使用它可以定义覆盖,并且distutils将使用为--home
等指定的内容替换所有出现的内容。但请注意,您必须引用文件名,以便BASH不尝试将其扩展为环境变量。
所以我最初的命令行变为:
python setup.py install --home=/home/andre/code/packages/install --install-purelib='$base/modules' \
--install-platlib='$base/modules' --install-scripts='$base/scripts' --install-data='$base/data'
希望我以外的人发现有用!
答案 2 :(得分:0)
作为快速检查,我建议更换
~/code/packages/install
与
/full_path_to_your_user/code/packages/install
答案 3 :(得分:0)
如果您只想在主目录中使用它,则根本不需要安装它。只需确保容器目录位于某个地方的python路径上,然后将django / bin中的脚本移动到主PATH上的某个位置(或将该目录添加到路径中)。