python:加载共享库时出错:libpython3.4m.so.1.0:无法打开共享对象文件:没有这样的文件或目录

python:加载共享库时出错:libpython3.4m.so.1.0:无法打开共享对象文件:没有这样的文件或目录,python,python-3.x,virtualenv,Python,Python 3.x,Virtualenv,我已经使用virtualenv创建了一个python虚拟环境,激活它后,我可以看到python在我的shell中的安装位置,如下所示: (virtualenv测试)bash-4.1$python在哪里 python:/usr/bin/python2.6/usr/bin/python2.6-config/usr/bin/python /usr/lib/python2.6/usr/lib64/python2.6/usr/X11R6/bin/python2.6 /usr/X11R6/bin/pytho

我已经使用virtualenv创建了一个python虚拟环境,激活它后,我可以看到python在我的shell中的安装位置,如下所示:

(virtualenv测试)bash-4.1$python在哪里
python:/usr/bin/python2.6/usr/bin/python2.6-config/usr/bin/python
/usr/lib/python2.6/usr/lib64/python2.6/usr/X11R6/bin/python2.6
/usr/X11R6/bin/python2.6-config/usr/X11R6/bin/python
/usr/bin/X11/python2.6/usr/bin/X11/python2.6-config
/usr/bin/X11/python/usr/include/python2.6
/usr/share/man/man1/python.1.gz
我还可以看到我使用的python版本:

(virtualenv测试)bash-4.1$which python
/数据/virtualenv测试/bin/python
但是,键入python后,我收到以下错误消息:

(virtualenv测试)bash-4.1$python
python:加载共享库时出错:libpython3.4m.so.1.0:无法打开共享对象文件:没有这样的文件或目录

潜在原因是什么?

尝试将python3.4的lib路径添加到
$LD\u LIBRARY\u path
环境变量中

首先找出python3.4的lib路径(取决于安装python3.4的方式)

对我来说是:
/opt/python361/lib
,然后将其添加到环境变量中,如下所示:

export LD\u LIBRARY\u PATH=$LD\u LIBRARY\u PATH:/opt/python361/lib
p.S. 我在将
virtualenv
python3.6
一起使用时遇到了类似的问题,我这样修复了它:

  • 首先,将
    include
    附加到
    /etc/ld.so.conf
    (类似于:
    include/opt/python361/lib
    include/usr/local/lib
  • 然后,通过运行
    sudo/sbin/ldconfig-v
    激活新配置

export LD\u LIBRARY\u PATH=[到libpython3.4m.so的python路径]

libpython3.4m。因此
在您构建它的python源代码下

将它放在.bashrc中,将其设置为自动登录


我无法在我的机器上强制virtualenv使用3.4,但您可以看到,在virtualenv的
lib
下,只有一些指向本地python安装的符号链接。我猜是libpython3.4m。所以是由其中一个获取的。

对于python3.6,它是由

sudo apt-get install libpython3.6-dev

另一种方法是在configure中添加
LDFLAGS=“-Wl,-rpath/usr/local/lib”

./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

/usr/local/lib
libpython3.*的路径。因此
文件位于上面的

中,对于python 3.X,您可以通过以下方法解决此问题:

sudo apt-get install libpython3.x-dev

无需手动更改环境路径。

在Python3.8上,我通过删除virtualenv目录(
/venv
,在我的例子中)并使用安装的pip的python内置的
venv
模块重新创建解决了这个问题。我使用的是arch linux,也是第一个使用sudo pacman-Syu的人。Python最初是使用sudopacman-spython安装的

$ rm -r ./venv
$ python -m venv venv
$ . ./venv/bin/activate
$ python --version
Python 3.8.1

对我来说,
libpython3.6m.so.1.0
在我下载Python源代码的文件夹中(
~/Python3.6.9

我只是做了:
sudocp~/Python3.6.9/libpython3.6m.so.1.0/usr/local/lib/Python3.6/


和:
export-LD\u-LIBRARY\u-PATH=$LD\u-LIBRARY\u-PATH:/usr/local/lib/python3.6

我通过安装软件包来运行它

sudo apt-get install libpython3.x-dev 


这个对我有用

cd~/
vim.bashrc
导出LD_LIBRARY_PATH=~/miniconda/envs/python3.6/lib/

2。为我工作。你能给我指出一个好的资源方向,让我明白为什么这样做有效吗?谢谢。在红帽上玩把戏(没有虚拟环境)。我的路径是/opt/local/lib(我在调用./configure时使用--enable shared从源代码构建了python,并打印出了共享文件的路径。第一个答案对我有效,但当我使用gunicorn时,我得到了相同的错误,在这种情况下,P.S.解决方案做到了。这对我有效。CentOS下的python 3.7.4。谢谢!这对我构建和安装python-3.8很有效。2在ubuntu 14.04.6I上,我在尝试此解决方案时收到以下错误:
/python:symbol lookup error:/python:undefined symbol:\uuuugcov\u indirect\u call\u callee
我正在删除这些标志,并将尝试@willezh的解决方案。python 3.6在我的repos中不可用。我在Jessie上。耶!老问题,添加版本控制,为什么rks将提高答案质量。否则,它将有助于降低投票率或将问题标记为“低质量答案”。结束评论。欢迎并享受此过程;-)