为什么我的系统前缀设置为"/usr"?



我正在尝试在没有管理员权限的系统上从源代码在 Linux 上安装 python2.7。/usr/bin中安装了一个版本,但我希望我的安装完全独立于此版本。 我也在使用较新的 gcc 编译器测试构建,所以我想避免像 anaconda 这样的预构建包。

我下载了python源代码并运行了以下内容

./configure --prefix=$INSTALL_DIR --exec-prefix=$INSTALL_DIR --enable-shared --enable-optimizations --enable-unicode=ucs4
make
make install

$INSTALL_DIR的地方就是我希望我的安装去的地方。

配置和构建运行没有错误,但是,当我运行构建的python可执行文件时

$INSTALL_DIR/bin/python

并检查它仍在使用/usr作为前缀的搜索路径:

Python 2.7.13 (default, May 31 2017, 17:58:17) 
[GCC 7.1.1 20170503 (Red Hat 7.1.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys 
>>> sys.prefix
'/usr'

这意味着找不到我安装到$INSTALL_DIR中的模块。 此外,如果模块已安装在/usr空间中,则运行pip install XXX不会执行任何操作。

我想避免使用$PYTHONPATH$LD_LIBRARY_PATH之类的东西,那么有没有办法在sys.prefixsys.path指向$INSTALL_DIR并且对系统级安装一无所知的地方进行设置?

感谢您的帮助。

停止传递除prefix以外的标志进行配置,您的 python 将给出正确的sys.path,该$INSTALL_DIR统计信息。

$ ./configure --prefix=$INSTALL_DIR

最新更新