【问题标题】:How can I install a python package without pip or virtualenv如何在没有 pip 或 virtualenv 的情况下安装 python 包
【发布时间】:2014-06-22 05:15:30
【问题描述】:

我必须将 python 应用程序部署到我无法控制的生产服务器 (Ubuntu),我也无权访问 apt-get, pip, virtualenv, 等。目前,它的服务器正在运行 python 2.6+。我需要安装pycrypto 作为应用程序的依赖项,但鉴于我的权限有限,我不知道该怎么做。我唯一认为我有权做的事情是wget 一个资源并解压缩它或类似的事情。

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

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

【问题讨论】:

  • 你可以试着把它放在你的 PYTHONPATH 中。

标签: python ubuntu


【解决方案1】:

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

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

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

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

或者,如果您使用的是 Windows,则进入:

%APPDATA%/Python/Python26/site-packages

pycrypto 的情况下,该软件包需要在安装前构建,因为它包含一些C 代码。源应该包含一个setup.py 文件。您必须构建正在运行的库

python setup.py build

之后,您可以通过以下命令将其安装到用户目录中:

python setup.py install --user

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


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


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

【讨论】:

  • 看起来我也没有easy_install,这很糟糕。所以要明确一点,当你说用我的应用程序运送库时,你的意思是我在问题中列出的方式还是其他方式?
  • @Brad 我刚刚更新了我的答案。您只需将包复制到每个用户的站点目录中。有关详细信息,请参阅我的答案和链接文档。一些复杂的安装需要修改一些找到的.pth,但这通常很容易。如果基本的复制/粘贴不起作用,请给我留言,我会检查pycrypto 是否需要一些配置。
  • 当然easy_install确实会检查权限,pip也不会,但ubuntu肯定会检查。
  • @PadraicCunningham 我不明白你评论的重点。我只是想澄清一下:系统安装确实暗示需要使用sudo。您可以在没有sudo 权限的情况下执行系统安装(尽管这样做很奇怪...)
  • 我不明白你的意思,如果你想在 ubuntu 上使用 pip 或 easy_install 安装 python 包到你需要 sudo 的默认包目录。基本上能够在没有 sudo 的情况下在系统范围内安装就违背了首先拥有 sudo 的目的。
【解决方案2】:

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

【讨论】:

  • 如果没有 sudo,你将如何安装?
  • @PadraicCunningham 是 easy_install 不在系统上?
  • 您需要 sudo 才能在我想安装 python 的任何 /usr 子目录中安装软件包。
  • @PadraicCunningham 如果您只是为您的用户安装,则不会。
猜你喜欢
  • 2021-08-11
  • 2021-10-05
  • 1970-01-01
  • 2016-02-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多