python - 在Linux上使用Python模块编译GEOS 3.6.2

标签 python linux python-3.x python-3.6 geos

尝试在已编译 Python 3.6.4 的 Linux 系统上安装 GEOS-3.6.2。 我正在尝试使用以下命令制作包:

export PYTHON=/usr/local/bin/python3 && make && sudo make install

配置命令失败并显示:

...much snipped...
checking for swig... /usr/bin/swig
checking for SWIG version... 3.0.8
configure: SWIG executable is '/usr/bin/swig'
configure: SWIG library directory is '/usr/share/swig3.0'
checking for python version... 3.6
checking for python platform... linux
checking for python script directory... ${prefix}/lib/python3.6/site-packages
checking for python extension module directory... ${exec_prefix}/lib/python3.6/site-packages
checking for Python include path... /usr/local/include/python3.6m
checking for Python library path... 
configure: error: cannot find Python library path

我已确认 Python 库存在于/usr/local/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.a`

我用一个简单的 ./configure --prefix=/usr/local && make && sudo make install 编译了 python

系统内容:

~/Downloads/geos-3.6.2$ uname -a
Linux Sleipnir 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
~/Downloads/geos-3.6.2$ which python3
/usr/local/bin/python3
~/Downloads/geos-3.6.2$ python3 -V
Python 3.6.4
~$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

最佳答案

感谢上述 Knud 的评论才能够正确编译 GEOS。 Python 现在配置为 ./configure --prefix=/usr/local --enable-shared 并后跟 sudo ldconfig -v/usr/local/lib

按照这些操作,GEOS 编译得很好 export PYTHON=/usr/local/bin/python3 && ./configure --prefix=/usr/local --enable-python && make && sudo make install

更新:在尝试在另一个系统上构建 GEOS 时,我再次遇到了这个问题。这次的解决方案略有不同。 Python 编译构建了库,文件名为 libpython3.6m.so.1.0。 GEOS 配置正在寻找 libpython$PYTHON_VERSION.* 的模式。如果系统返回的 python 版本确定为 3.6,则构建将由于添加了“m”而失败。

额外的修复是在库目录中添加一个符号链接(symbolic link)作为ln -s libpython3.6m.1.0 libpython3.6.so

关于python - 在Linux上使用Python模块编译GEOS 3.6.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561381/

相关文章:

linux - 在 Linux 中搜索文件名中的模式

c++ - 是否有一个易于使用、与平台无关的包可以用来在 C++ 下读写 gzip 流?

Python - 列表元素以某种方式被覆盖

python - 是否有替代 python 函数作为 PHP include() 函数?

linux - 如果 mmap() 没有 fd(使用 MAP_ANONYMOUS),将调用哪个函数?

python - 如何在贪吃蛇游戏中为蛇的 body 部位使用不同的图像? (Python、Pygame、蛇)

python - NotImplementedError : Use module Crypto. Cipher.PKCS1_OAEP 而不是错误

python - 在 Dataframe 的句子中查找多个单词并转换为分数的总和

python - Pip3 无法在 docker build 期间安装 requirements.txt

Python:代码统计