如何在本地目录中安装python模块? --user和导出pythonpath不起作用

时间:2015-03-14 03:38:43

标签: python linux module pythonpath

我不太了解python,但是想在我没有sudo访问权限的服务器上的本地目录中安装一些python模块。

我首先进入我想要的目录(不是root)并创建存储我的自定义模块所需的目录树

cd /root/example/sub-example
mkdir -p local/lib/python2.7/site-packages

然后我将此本地路径导出到PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/root/example/sub-example/local/lib/python2.7/site-packages

然后我创建一个新的子目录来存储python包,同时提取

mkdir example-python-directory
cd example-python-directory
wget http://example-python-package
tar -xvf example-python-package.tar.gz
cd example-python-package

最后,我运行带有--user标志的setup.py脚本,尝试将其安装到我指定的/local目录中

python setup.py install --user

问题是,我的/root/example/sub-example/local/lib/python2.7/site-packages目录中没有安装任何内容,而是发现我现在在根目录下有一个新目录:/root/.local/lib/python2.7/site-packages

有没有办法防止这种情况发生?我觉得我缺乏Python知识导致我做出一些可能对其他人显而易见的愚蠢错误。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

virtualenv是我为这种情况推荐的(几乎任何其他情况)。我将它用于 Python 中的所有操作。

它允许您实际创建一个包含 Python 环境的沙箱,该环境通过计算机上的 Python 安装引导,并安装您想要的任何模块。

通常,它不应该使用 sudo ,因为您没有触及系统安装。您通常可以pip install一个模块直接进入 virtualenv ,然后从 virtualenv 中运行脚本。您基本上只需要一个可以读/写/执行的位置,比如您在用户的 home 目录中创建的目录。

您可以通过执行pip freeze > requirements并将其检入 SCM 来跟踪已安装的内容,然后可以使用该文件重新创建新的 virtualenv ,准备运行你的脚本。

我上面提供的链接提供了有关如何使用 virtualenv 的更多详细信息。

根据OP的评论进行编辑:

您仍然可以在 virtualenv 之外使用pip install,我建议您这样做。但是,这只能在可能在框中的各种 Python 安装上运行(从您要使用的安装的 bin 目录中调用pip)。

但是,这不适用于安装到任意目录。为此,您可以尝试将 egg 文件(它们应该是zip文件)解压缩到您想要的目录中,然后确保该目录位于PYTHONPATH上。一些 egg 文件可以从PyPI直接下载,但有些只是源代码。

我认为方法比 virtualenv 更复杂,更容易出问题。

答案 1 :(得分:1)

创建一个名为“lib”的文件夹

对于Python 3

pip3 install <your_python_module_name> -t lib/

对于Python 2

pip install <your_python_module_name> -t lib/

答案 2 :(得分:1)

CFLAGS=-I$(brew --prefix)/include LDFLAGS=-L$(brew --prefix)/lib pip install <package>

我发现,在没有root用户访问权限的服务器上,通常可以使用此命令将python模块安装到.brew / lib中。