如何在没有pip或virtualenv的情况下安装python包

时间:2014-06-17 15:13:06

标签: python ubuntu

我必须将python应用程序部署到我无法控制的生产服务器(Ubuntu),也没有apt-get, pip, virtualenv,等权限。目前,它的服务器正在运行python 2.6+。我需要安装pycrypto作为应用程序的依赖项,但鉴于我的权限有限,我不知道如何做到这一点。唯一认为我有权做的就是wget一个资源,并按照这些方式解压缩它。

首先,是否可以在不按上述方法安装的情况下使用它?如果没有,我可以下载该软件包然后放入pycrypto目录中的__init__.py文件,以便python知道如何找到它:

/my_app
  /pycrypto
     /__init__.py
     /pycrypto.py

2 个答案:

答案 0 :(得分:4)

根据PEP370,从 python 2.6 开始,您可以拥有每用户的站点目录(请参阅What's new in Python 2.6?)。

因此,您可以使用--user的{​​{1}}选项为每个用户而不是系统范围安装目录。我相信easy_install也存在类似的选择。 这不需要任何权限,因为它只使用当前用户目录。

如果您没有安装任何安装程序,可以手动将软件包解压缩到:

pip

或者,如果你在Windows上,请进入:

~/.local/lib/python2.6/site-packages

对于%APPDATA%/Python/Python26/site-packages ,程序包在安装之前需要构建,因为它包含一些C代码。源应包含pycrypto文件。您必须构建运行

的库
setup.py

之后,您可以通过提供:

将其安装在用户目录中
python setup.py build

请注意,构建阶段可能需要安装一些C库。


如果您不想这样做, only 选项是将库与您的应用程序一起发送。


顺便说一下:我相信python setup.py install --user 在执行系统范围的安装之前并没有真正检查你是否是root用户。它只是检查它是否可以在系统范围的站点目录中写入。因此,如果您确实有权限在那里写,那么首先不需要使用easy_install。然而,这真的很奇怪......

答案 1 :(得分:0)

使用easy_install。它应该已经安装在Ubuntu上用于python 2.6+。如果没有看看这些安装instructions