假电脑架构(64位而不是32位)

时间:2013-12-18 20:41:10

标签: python pip django-deployment

我在一台只有FTP访问权限的服务器上托管Django网站。服务器采用64位架构,我的计算机采用32位架构。对于某些模块,比如MySQL-python,架构很重要。

有没有办法在我的个人计算机requirements.txt上构建一个适合服务器的site-packages目录?我认为有必要以某种方式伪造pip的架构。

而且......是的。我可以访问一些64位机器。但是为了获得良好的工作流程,最好在我的个人计算机上安装所有内容。

2 个答案:

答案 0 :(得分:5)

在VM中进行本地开发

使用virtualbox和make your guest OS be 64-bit

您仍然可以在本地编辑(通过共享文件夹),但可以部署到与架构匹配的虚拟机。这将为您节省很多痛苦。

这样做的最大原因是必须为架构编译许多库。纯蟒蛇不会有问题。

在远程主机上使用virtualenv

此外,在安装软件包并部署代码时,应使用virtual environment而不是site-packages。盒子上的任何管理员都可以通过系统更新来破坏您光荣的站点包。我们不希望这样!

答案 1 :(得分:4)

你所要求的比你想象的要难得多。

许多库(包括MySQLdb)包含必须为目标系统编译的C扩展代码。如果将它们编译为在系统上运行,则它们将无法在目标系统上运行。这意味着你需要一个交叉编译器。

它们还需要链接到目标系统上存在的Python库,而不是系统上的Python库。而且他们几乎总是需要与这些库一起使用的头文件和配置文件。

大多数此类库都有其他依赖项 - 在这种情况下,您几乎肯定需要来自目标系统的libmysql,而不是系统中的libmysql,当然还有需要的头文件和配置文件。

而且,如果你想使用pip,你需要一个distutils / setuptools配置,选择合适的工具链,库等来构建。

如果你做了所有这些,那么你可以为另一个系统的Python构建一个站点包。

如果你谷歌“交叉编译python模块”,你会发现像this one这样的博客会给你一些指导,如果你以前从未做过这样的事情。当然,正如博客文章中描述的那些不容易的事情一样,它们很快就会过时(我看到的前三个都是从安装distribute开始替换setuptools开始的。你绝对不想再这样做了,所以你必须真正了解他们正在做什么,并且能够自己调试这个过程,而不是盲目地跟着他们。


如果你不想或不想自己做,那你就不能做你想做的事。但无论如何都有一个更简单的解决方案。

只需为服务器设置开发系统即可。如果您在64位硬件上运行,则可以双启动,或使用virtualbox或VMware等虚拟化工具在32位Linux之上运行64位Linux。安装目标服务器上的相同发行版和相同的软件包,以及随附的-dev / -devel /任何软件包,并在那里构建。

如果您的硬件实际上是32位,或者您的目标是OS X而不是Linux,或者目标环境占用了大量磁盘空间,只是为了设置它不适合您的笔记本电脑,那么这显然不会那么容易。但这些都不是真的,所以很容易。

相关问题