❯ python
>>> import lzma
ModuleNotFoundError: No module named '_lzma'
我已经安装了以下所有软件包:
brew install openssl readline sqlite3 xz zlib
xcode-select --install
唯一的注意事项是Homebrew将软件包安装到~/.brew
目录下。
感谢您提供任何意见。
❯ python
>>> import lzma
ModuleNotFoundError: No module named '_lzma'
我已经安装了以下所有软件包:
brew install openssl readline sqlite3 xz zlib
xcode-select --install
唯一的注意事项是Homebrew将软件包安装到~/.brew
目录下。
感谢您提供任何意见。
之前的回答都对我没用。在这个gist中的说明对我有用。
简而言之:您可能缺少库,如果是这种情况,您可以使用Homebrew安装它们,然后再从中重新安装/重建Python版本:
$ brew install xz
$ pyenv uninstall <desired-python-version>
$ pyenv install <desired-python-version>
注意:我只在使用 pyenv
安装的 Python 中遇到了这个问题,而在 Mac 系统自带的 Python 或者 conda
Python 中没有。除非您有特定需要(比如需要更多控制 Python 版本/更新),否则最好使用 brewed python(brew install python
)而不是 pyenv
。
--enable-framework
标志安装所需的python版本。这对我起作用了。PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.6.7
原因是您尝试使用的模块是用C实现的,而CPython使用共享库将使用上述标志进行构建。
sudo apt-get install lzma
sudo apt-get install liblzma-dev
sudo apt-get install libbz2-dev
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/
sudo cp /usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so /home/luca/.asdf/installs/python/3.8.10/lib/python3.8`
sudo cp /usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so /home/luca/.asdf/installs/python/3.8.10/lib/python3.8
谷歌总是把我带到这个帖子,但好的答案在这里
简单来说,您需要做以下操作:
CFLAGS="-I$(brew --prefix xz)/include" LDFLAGS="-L$(brew --prefix xz)/lib" pyenv install 3.9.1
最终发现,这个问题只有在将Homebrew目录从默认位置移动时才会出现。如果Homebrew是正常安装的,则不需要此操作。
我将以下内容添加到我的.zshrc
文件中(或者你的.bashrc
或.bash_profile
)
export LDFLAGS="-L/Users/pcosta/.brew/opt/xz/lib $LDFLAGS"
export CPPFLAGS="-I/Users/pcosta/.brew/opt/xz/include $CPPFLAGS"
export PKG_CONFIG_PATH="/Users/pcosta/.brew/opt/xz/lib/pkgconfig:$PKG_CONFIG_PATH"
python brew install automake autoconf libtool pkg-config python zlib freetype libxml2 libxslt xz libyaml
但后来我又运行了一个pyenv install xxxx,以强制进行新的编译,最终解决了问题。 - Andrea Moro我没有答案。但是这种症状听起来像是Python的一个bug票:
报告于2020年。不幸的是,截至2022年仍未得到修复。
当我在运行MobaXterm的Windows 10上尝试使用软件包csvkit
时,我遇到了这个问题:
软件包安装完全正常,但是/bin/csv*工具无法运行:
$ /bin/python3 -m pip install csvkit --quiet
✔
$ csvstat --version
Traceback (most recent call last):
File "/bin/csvstat", line 5, in <module>
from csvkit.utilities.csvstat import launch_new_instance
File "/usr/lib/python3.6/site-packages/csvkit/utilities/csvstat.py", line 12, in <module>
from csvkit.cli import CSVKitUtility, parse_column_identifiers
File "/usr/lib/python3.6/site-packages/csvkit/cli.py", line 16, in <module>
import lzma
File "/usr/lib/python3.6/lzma.py", line 27, in <module>
from _lzma import *
ModuleNotFoundError: No module named '_lzma'
✘
我的解决方法是使用Python2,但并不完全满意。
首先,将不可用的Python3版本丢弃:
$ /bin/python3 -m pip uninstall csvkit --quiet --yes
✔
$ hash -r
✔
$ csvstat --version
csvstat: command not found
✘
现在已经不存在了。让我们再尝试一次,但这次使用python2:
$ /bin/python2 -m pip list | grep -i csv
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
WARNING: You are using pip version 20.3.4; however, version 21.3.1 is available.
You should consider upgrading via the '/bin/python2 -m pip install --upgrade pip' command.
✘
$ /bin/python2 -m pip install csvkit --quiet
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
WARNING: The scripts csvclean, csvcut, csvformat, csvgrep, csvjoin, csvjson, csvlook, csvpy, csvsort, csvsql, csvstack, csvstat, in2csv and sql2csv are installed in '/usr/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: You are using pip version 20.3.4; however, version 21.3.1 is available.
You should consider upgrading via the '/bin/python2 -m pip install --upgrade pip' command.
✔
$ csvstat --version
csvstat 1.0.7
✔
这里很多答案都需要在Mac开发中使用brew
。如果你没有brew
,比如你的开发环境由nix
管理,你可以按照以下步骤进行操作:
xz
源代码。./configure --prefix=~/xz-install
(你可以更改前缀为任何你想要的位置)。你可能需要先用mkdir -p
确保目录存在。make
(注意:你需要xcode命令行工具来编译它)。make install
。这将安装到你设置的任何目录下,使用--prefix
参数。--prefix
目录设置为~/xz-install/
,则可以使用CFLAGS="-I~/xz-install/include" LDFLAGS="-L~/xz-install/lib" pyenv install 3.10.4
或者你想要的任何版本来安装Python。asdf
安装了 Python,可以按以下方式重新安装:asdf uninstall python
asdf install python latest
install
命令的示例输出:
python-build 3.10.6 /Users/u/.asdf/installs/python/3.10.6
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.6.tar.xz...
-> https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz
Installing Python-3.10.6...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.10.6 to /Users/u/.asdf/installs/python/3.10.6
sudo apt install liblzma-dev
首先
yum install xz-devel
yum install python-backports-lzma
pip install backports.lzma
第二
cd /usr/local/lib/python3.8
vi lzma.py
最后 修改第27行
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties
brew
历史记录)。 - Paulo Costa