我正在安装带前缀的python包,并收到以下错误。
export PYTHONPATH=/home/user/some_prefix/lib64/python3.4/site-packages:$PYTHONPATH
当然我可以$ python3 -c "import distutils.sysconfig as sc; print(sc.get_python_lib(prefix=\"$HOME/some_prefix\"));"
/home/user/some_prefix/lib/python3.4/site-packages
。但鉴于路径有python版本,我从How do I find the location of my Python site-packages directory?
lib
不幸的是,它们在/
部分不匹配,除了可忽略不计的尾随$ python3 setup.py install --prefix=$HOME/some_prefix
running install
You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from. The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/home/user/some_prefix/lib64/python3.4/site-packages/
and your PYTHONPATH environment variable currently contains:
'/home/user/some_prefix/lib/python3.4/site-packages'
。所以它仍然失败。
$ python3 -c "import distutils.sysconfig as sc; print(sc.get_python_lib(\"A\", \"B\", \"C\"));"
C/lib64/python3.4
现在,我该如何正确匹配呢?
我检查了文档,但我认为没有相关的论点。
https://docs.python.org/3/distutils/apiref.html#module-distutils.sysconfig distutils.sysconfig.get_python_lib([plat_specific [,standard_lib [,prefix]]])¶
/usr/lib
另外,哪一个是对的?是lib还是lib64?我在$ ll /usr/lib/python3.4/site-packages/ | wc
70 554 5408
$ ll /usr/lib64/python3.4/site-packages/ | wc
11 82 764
中看到了更多的包。
$ uname -a
Linux localhost 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
$ which python3
/usr/bin/python3
$ python3 --version
Python 3.4.8
我正在使用来自centos 7的标准python。
$bootstrap-sass-asset-helper: false;
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
$icon-font-name: "glyphicons-halflings-regular";
答案 0 :(得分:1)
Fedora / CentOS patches various Python module更改安装位置,请参阅this ServerFault post on the difference between /usr/lib
and /usr/lib64
。
请注意,jQuery(document).ready(function(){
jQuery('#modal_id').modal();
jQuery(document).ready(function(){
jQuery('#modal_id').modal('open');
});
});
路径仅用于平台特定代码,而不适用于纯python库。因此,使用正确的方法是将plat_specific
argument to get_python_lib()
(第一个)设置为/usr/lib64
:
True
但是,如果您的目标前缀目录是用于没有Fedora / CentOS补丁的单独的Python安装,那么您应该真正使用在该前缀中安装的Python二进制文件处理安装:
$ python3 -c "import distutils.sysconfig as sc; print(sc.get_python_lib(True, prefix=\"$HOME/some_prefix\"))"
它将提供所有正确的系统配置,包括未修补的$HOME/some_prefix/bin/python3 setup.py install
和distutils
模块,其中包含正确的本地sysconfig
值,而不是$PREFIX
将发出警告。
如果您想要从系统安装中隔离软件包,请使用virtualenv并使用特定于环境的Python二进制文件进行安装:
PYTHONPATH