簡體   English   中英

python 3.6安裝和lib64

[英]python 3.6 installation and lib64

我正在嘗試在 openSUSE 42.2 上從源代碼安裝新的 Python(3.6,幾周前發布)。 一切

./configure --prefix /home/paul/2017 --enable-optimizations
make
make install

似乎工作得很好,但是當我調用閃亮的新解釋器時,我收到此錯誤:

Python 3.6.0 (default, Jan  9 2017, 22:01:27)                                                                                                                                     
[GCC 4.8.5] on linux                                                                                                                                                              
Type "help", "copyright", "credits" or "license" for more information.                                                                                                            
Traceback (most recent call last):
  File "/home/paul/.pythonrc", line 7, in <module>
    import readline
ModuleNotFoundError: No module named 'readline'

現在,模塊就在那里,它安裝在 $PREFIX/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so 下。 只有解釋器不在那里(它完全忽略了 lib64,我用 -vv 進行了檢查)。

更新:需要明確的是,這不僅會影響 readline,還會影響 lib64 下的所有內容,尤其是 lib-dynload 下的模塊。

這似乎是一個已知問題,請參閱Python bugtracker 這是一個相當漫長的交流結束於

是否就需要在這里做什么達成一致? 我想在它 10 歲生日之前看到它變成 3.5 :)

這讓我有點困惑。 這是應該解決的嗎? 我不記得以前遇到過這個問題,所以我想知道它是否是 3.6 回歸。

顯然,任何修復都是最受歡迎的。

更新:目前我可以通過將 lib64 下的所有內容符號鏈接到 lib 來解決這個問題。 顯然,這不是一個理想的解決方案。 至少,它首先違背了引入 lib64(能夠並排擁有 32 位和 64 位版本)的目的。 我更喜歡配置文件中的內容。

opensuse openSUSE:Factory python3x有補丁。

鏈接: Python 3.6 Python 3.8 Python 3.9

規范文件通常是一個很好的起點。

注意: install步驟將在/usr/local/bin安裝python3 將其更改為altinstall可避免隱藏系統范圍的python3

安裝

創建一個指向所有下載文件( python 源工廠補丁)的目錄的downloads變量

export downloads=/usr/local/build/downloads

在用戶可寫目錄中:

tar --no-same-owner -xvf $downloads/Python-3.6.4.tar.xz
cd Python-3.6.4

patch -p1 < $downloads/python-3.6.0-multilib-new.patch
patch -p0  < $downloads/python-3.3.0b1-localpath.patch
patch -p0 < $downloads/python-3.3.0b1-curses-panel.patch

# mind this step, otherwise
# none of the modules in `lib-dynload` could be imported !
autoreconf -i

mkdir build; cd $_
../configure --enable-optimizations --enable-ipv6 \
             --with-fpectl --enable-shared --with-system-ffi \
             --with-system-expat --enable-loadable-sqlite-extensions
make -j $(nproc)
# altinstall, not install (see above)
sudo make altinstall

卸載

要刪除已安裝的文件:

sudo rm -rf /usr/local/lib64/python3.6/
sudo rm -f /usr/local/lib64/libpython3.6m*
sudo rm -f /usr/local/lib64/libpython3.so
sudo rm -f /usr/local/lib64/pkgconfig/python-3.6*
sudo rm -f /usr/local/bin/python-3.6*

對於python3.7

tar --no-same-owner -xvf $downloads/Python-3.7.3.tar.xz
cd Python-3.7.3
patch -p1 < $downloads/python-3.7.3-python-3.6.0-multilib.patch
patch -p1 < $downloads/python-3.7.3-distutils-reproducible-compile.patch
patch -p0 < $downloads/python-3.7.3-python-3.3.0b1-localpath.patch
patch -p0 < $downloads/python-3.7.3-00251-change-user-install-location.patch

# do not forget !
autoreconf -i

mkdir build; cd $_
../configure --enable-optimizations --enable-ipv6 --enable-shared --with-system-ffi --with-system-expat --enable-loadable-sqlite-extensions

make -j $(nproc)

sudo make altinstall

對於python 3.8

tar --no-same-owner -xvf $downloads/Python-3.8.1.tar.xz
cd Python-3.8.1/
patch -p1 < $downloads/python-3.8.1-F00102-lib64.patch
patch -p1 < $downloads/python-3.8.1-F00251-change-user-install-location.patch
patch -p1 < $downloads/python-3.8.1-SUSE-FEDORA-multilib.patch
patch -p1 < $downloads/python-3.8.1-distutils-reproducible-compile.patch
patch -p1 < $downloads/python-3.8.1-python-3.3.0b1-localpath.patch

# do not forget !
autoreconf -i

mkdir build; cd $_
../configure --enable-optimizations --enable-ipv6 --enable-shared \
             --with-system-ffi --with-system-expat \
             --enable-loadable-sqlite-extensions
make -j $(nproc)
# altinstall, not install (see above)
sudo make altinstall

好的,我找到了一個解決方案:如果使用--enable_shared選項進行配置,問題就會以某種方式消失。 對我來說已經足夠好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM