如何安装没有root访问权限的python模块?


220

我正在上一些大学课程,并且得到了“教学帐户”,这是我可以用来从事工作的学校帐户。我想在那台机器上运行需要大量计算的Numpy,matplotlib,scipy代码,但是由于我不是系统管理员,所以无法安装这些模块。

我该如何安装?


14
您可以将--user或--prefix传递给要安装的软件包的setup.py,以将其本地安装。请参阅Python模块的警报安装
2011年

Answers:


306

在大多数情况下,最佳解决方案是通过运行以下命令来依赖所谓的“用户站点”位置(有关详细信息,请参阅PEP):

pip install --user package_name

以下是我原始答案提供的一种“更手动”的方法,如果上述解决方案适合您,则无需阅读它。


使用easy_install,您可以执行以下操作:

easy_install --prefix=$HOME/local package_name

它将安装到

$HOME/local/lib/pythonX.Y/site-packages

(“本地”文件夹是许多人常用的典型名称,但是您当然可以指定您有权写入的任何文件夹)。

您将需要手动创建

$HOME/local/lib/pythonX.Y/site-packages

并将其添加到您的PYTHONPATH环境变量中(否则easy_install会抱怨-btw运行上面的命令一次,以找到XY的正确值)。

如果您没有使用easy_install,请寻找一个前缀选项,大多数安装脚本都允许您指定一个。

使用pip可以使用:

pip install --install-option="--prefix=$HOME/local" package_name

1
如果Python没有什么pipeasy_install可用?
Girardi 2014年

安装进行得很好(pip方法),但是导入package_name无效。我需要更改/添加一些配置吗?还将安装复制到何处(明智的选择)?
idoda 2014年

2
//,@AnotherDayAnotherRob,听起来像个好问题
弥敦道(Nathan Basanese)'16

2
更新答案并将--user说明放在顶部可能是有意义的。:)
VasiliNovikov

1
@Girardi如果您已将python从src安装到本地目录/ my_python /,则首先在以下位置安装pip很有用:wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O-| / my_python / bin / python-然后您可以安装其他带有pip +前缀的模块
teng_wenxuan

51

没有访问权限或安装权限easy_install

然后,您可以创建一个python virtualenvhttps://pypi.python.org/pypi/virtualenv)并从该虚拟环境中安装该软件包。

在shell中执行4个命令就足够了(为XXX插入当前版本,如16.1.0):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

来源和更多信息:https : //virtualenv.pypa.io/en/latest/installation/


1
在没有pip安装系统的情况下,此答案对我很有用。
丹·斯托威尔2013年

我为本地python安装尝试了一个变体。curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | 〜/ Python-2.7.8 / python
Neerav 2014年

3
源似乎已经移动,并且上述内容无法立即使用。相似的指令也可以https://virtualenv.pypa.io/en/latest/installation/正常工作:)
Andras Deak's

13

您可以运行easy_install将Python软件包安装在主目录中,即使没有root访问权限。有一种使用site.USER_BASE的标准方法,默认为$ HOME / .local或$ HOME / Library / Python / 2.7 / bin之类,默认情况下包含在PYTHONPATH中

为此,请在主目录中创建一个.pydistutils.cfg:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

现在,您可以在没有root特权的情况下运行easy_install:

easy_install boto

另外,这还可以让您在没有root访问权限的情况下运行pip:

pip install boto

这对我有用。

源自Wesley Tanaka的博客:http : //wtanaka.com/node/8095


1
这对我来说可以在没有root访问权限的情况下在linux服务器上进行安装。谢谢但是我不知道它为什么起作用。有人能给个提示吗?
ChathuraG '16

9

如果必须使用distutils setup.py脚本,则可以使用一些命令行选项来强制安装目标。请参阅http://docs.python.org/install/index.html#alternate-installation。如果重复出现此问题,则可以设置distutils配置文件,请参阅http://docs.python.org/install/index.html#inst-config-files

设置PYTHONPATH变量在tihos post中有描述。


1
非常感谢。我已经lxml使用python <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S

6

重要问题。我使用的服务器(Ubuntu 12.04)拥有easy_install3但没有pip3。这是我将Pip和其他软件包安装到主文件夹的方式

  1. 要求管理员安装Ubuntu软件包 python3-setuptools

  2. 已安装点

像这样:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. 添加Pip(以及其他Python应用程序到路径)

像这样:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. 安装Python包

像这样

pip3 install --user httpie

# test httpie package
http httpbin.org

4

我使用JuJu,它基本上允许在$ HOME / .juju目录中有一个非常小的linux发行版(仅包含软件包管理器)。

它允许通过proot访问位于主目录中的自定义系统,因此,您可以安装没有root特权的任何软件包。它可以在所有主要的Linux发行版上正常运行,唯一的限制是JuJu可以在最低建议版本2.6.32的linux内核上运行。

例如,在安装JuJu以安装pip之后,只需键入以下内容:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip


1

在本地安装virtualenv(说明源):

重要提示:插入XXX的当前版本(如16.1.0)。 检查提取文件的名称,并将其插入YYYYY

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

使用安装任何软件包之前,您需要使用source虚拟Python环境env

$ source env/bin/activate

要安装新的python包(例如numpy),请使用:

(env)$ pip install <package>

这基本上是tremendows说明的更新版本。他的指示已经过时。我的编辑被拒绝了。因此,我将其发布为新的说明。
尼克拉斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.