Используйте tcl 8.6 с скомпилированным питоном - PullRequest
0 голосов
/ 24 мая 2018

Требование:

We want to build python v3.6.4 from source and then distribute it as tar so that it can be used in different machine by just untarring it. The built python needs to work with tcl v8.6

Выпуск:

Built python is looking for tcl8.5

Сборочная машина: CentOS 7

Шаги в здании следующие:

 - yum -y install openssl-devel wget gcc make tk-devel
 - wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
 - mkdir -p /opt/mayur/python/3.6.4/lib
 - tar -xvf Python-3.6.4.tgz
 - cd Python-3.6.4
 - ./configure --prefix=/opt/mayur/python/3.6.4 --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /opt/mayur/python/3.6.4/lib"
 - make altinstall 
 - tar cvf python3.6.4.tar -C /opt/mayur/python/3.6.4/

Затем, когда я распаковываю вышеупомянутый встроенный tar в /opt/mayur/python/3.6.4 на другом компьютере и запускаю import tkinter, он выдает следующую ошибку -

File "/opt/mayur/python/3.6.4/lib/python3.6/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: libtk8.5.so: cannot open shared object file: No such file or directory

Через некоторыеотладки я смог понять, что centos поддерживает только tk-devel 8.5.Итак, версия tk-devel, которая была установлена ​​на первом шаге, была v8.5.13, и поэтому python ищет libtk8.5.so.

Я видел этот пост post и изменениямоя конфигурация для

./configure --prefix=/opt/mayur/python/3.6.4 --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /opt/mayur/python/3.6.4/lib" --with-tcltk-includes=-I/opt/mayur/tcl/8.6.6.8606/include --with-tcltk-libs=-L/opt/mayur/tcl/8.6.6.8606/lib

Но это тоже не работает.

Может кто-нибудь дать несколько советов о том, как собрать Python v3.6.4 и связать его с tcl8.6?И как Python решает, какой tcl использовать?

...