0

我想将 Django 安装到自定义位置,我已经阅读了distutils 文档,它表明我应该能够执行以下操作来安装在我的主目录下(从解压的 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 球目录中。即,它似乎将模块、脚本等视为本地目录的简单相对路径,而不是相对于指定的--home。

我尝试使用 --prefix 设置根目录,并使用 setup.cfg 似乎没有任何效果。--prefix 和 --home 单独使用,没有其他覆盖工作,但与 --install-xxx 覆盖一起使用时,它不会。

我可能在做一些愚蠢的事情,或者文档是错误的,或者它们是一个错误。非常感谢任何帮助。

4

4 回答 4

2

我强烈建议您查看VirtualenvPip来创建基本的 python 包孤岛。

Pinax 项目现在专门使用它来将需求捆绑在一起供其他人使用,并且它越来越成为可重用应用程序领域的事实标准。

于 2009-10-29T16:44:14.863 回答
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'

希望我以外的人觉得这很有用!

于 2009-10-29T16:54:04.540 回答
0

作为快速检查,我建议更换

~/code/packages/install

/full_path_to_your_user/code/packages/install

于 2009-10-29T13:22:36.510 回答
0

如果您只想将它​​放在您的主目录中,则根本不需要安装它。只需确保容器目录位于您的 pythonpath 某处,然后将 django/bin 中的脚本移动到主 PATH 上的某个位置(或将该目录添加到您的路径中)。

于 2009-10-29T13:42:56.360 回答