我不太了解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知识导致我做出一些可能对其他人显而易见的愚蠢错误。谢谢你的帮助!
答案 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”的文件夹
pip3 install <your_python_module_name> -t lib/
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中。